hibernate —— 双向多对一映射(增/删/改数据)

双向多对一映射(增/删/改)

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

<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" 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="save-update"></many-to-one>
    </class>  
</hibernate-mapping>
test1
新增

session = sf.openSession();
session.beginTransaction();  
tGroup tg = new tGroup();
tg.setName("C++");
Set<tUser> set = new HashSet<tUser>();
for(int i = 0;i < 2;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();  

删除( 从一方删除 )

<many-to-one name="tgr" column="group_Id" class="com.hibtest2.entity.tGroup"cascade="save-update"></many-to-one>

tUser tu = (tUser) session.get(tUser.class, Long.parseLong("46"));
session.delete(tu);

删除( 从多方删除 )

<set name="uses" lazy="false" cascade="all">
        <key column="group_Id"></key>
        <one-to-many class="com.hibtest2.entity.tUser"/>
</set>

tGroup tg = (tGroup) session.get(tGroup.class, Long.parseLong("45"));
session.delete(tg);

session = sf.openSession();
session.beginTransaction();  
tUser tu = (tUser) session.get(tUser.class, Long.parseLong("50"));
tGroup tg1 = (tGroup) session.get(tGroup.class, Long.parseLong("48"));
tGroup tg2 = (tGroup) session.get(tGroup.class, Long.parseLong("51"));
tg1.getUses().remove(tu);
tg2.getUses().add(tu);
tu.setTgr(tg2);
session.update(tu);
session.getTransaction().commit();
session.close();  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值