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

来源:互联网 发布:软件项目管理ppt 编辑:程序博客网 时间:2024/05/29 06:55

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

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();  



0 0
原创粉丝点击