Hibernate——<one-to-many/>

<one-to-many/>:查询班级的同时查询所有学生信息

tGroup

public class tGroup implements Serializable{
      private Long id;  
      private String name;
      private Set uses = new HashSet();
      //省略GET/SET
}

tUser

public class tUser implements Serializable{
	private Long id;  
	private String name;
	private tGroup tgr
	//省略GET/SET
}

tGroup.hbm.xml

<set name="uses" lazy="false" inverse="true" cascade="all"> —— tGroup类中user集合 / 取消延迟加载
<key column="group_Id"></key>—— tUser表中的对应外键
<one-to-many class="com.hibtest2.entity.tUser"/>—— tUser类名
</set>

<hibernate-mapping>
    <class name="com.hibtest2.entity.tGroup" table="t_group">  
        <id name="id" type="java.lang.Long">  
            <column name="ID" precision="22" scale="0" />
			<generator class="sequence">
				<param name="sequence">seq_emp</param>
			</generator>
        </id>  
     <property name="name" type="java.lang.String">
           <column name="NAME" length="50"></column>
     </property>  
     <set name="uses" lazy="false" inverse="true" cascade="all">
           <key column="group_Id"></key>
           <one-to-many class="com.hibtest2.entity.tUser"/>
     </set>
    </class>  
</hibernate-mapping>
tUser.hbm.xml
<hibernate-mapping>
    <class name="com.hibtest2.entity.tUser" table="t_user">  
        <id name="id" type="java.lang.Long">  
            <column name="ID" precision="22" scale="0" />
			<generator class="sequence">
				<param name="sequence">seq_emp</param>
			</generator>
        </id>  
        <property name="name" type="java.lang.String">
        	<column name="NAME" length="50"></column>
        </property> 
        <many-to-one name="tgr" column="group_Id" class="com.hibtest2.entity.tGroup" cascade="all"></many-to-one>
    </class>  
</hibernate-mapping>
test1
新增:新tGroup和新tUser

session = sf.openSession();
session.beginTransaction();  
tGroup tg = new tGroup();
tg.setName("JSP");
Set set = new HashSet();
for(int i = 0;i < 3;i++){
      tUser tu = new tUser();
      tu.setName("a"+i);
      tu.setTgr(tg);
      set.add(tu);
}
tg.setUses(set);
session.save(tg);  
session.getTransaction().commit();
session.close();  
新增:新tGroup对应老tUser
session = sf.openSession();
session.beginTransaction();  
tGroup tg = new tGroup();
tg.setName("C");
Set set = new HashSet();
tUser tu1 = (tUser) session.get(tUser.class, Long.parseLong("35"));
tu1.setTgr(tg);
tUser tu2 = (tUser) session.get(tUser.class, Long.parseLong("36"));
tu2.setTgr(tg);
set.add(tu1);
set.add(tu2);
tg.setUses(set);
session.saveOrUpdate(tg);  
session.getTransaction().commit();
session.close();   
查询:查看某一Group信息及其所有学生( one - more 的意义)

//查看班级的时候,可能所有学生的信息 —— on - to - many
session = sf.openSession();
tGroup t = (tGroup) session.get(tGroup.class, Long.parseLong("24"));
System.out.println("组名:"+t.getName());
Iterator it = t.getUses().iterator();
while(it.hasNext()){
      tUser tt = (tUser) it.next();
      System.out.println(tt.getName());
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值