hibernate双向 一对多映射 :
双向一对多关联 ,实际上是 “一对多” 与 “多对一” 关联组合 .
也就是说必须在主控配置单向一对多关系的基础上,在被控方配置与其对应的多对一关系.
(一个地址住多个人 )
<mapping resource="com/pojo/Myuser.hbm.xml"/>
<mapping resource="com/pojo/Myaddress.hbm.xml"/>
Myaddress.hbm.xml :
<hibernate-mapping>
<class name="com.pojo.Myaddress" table="myaddress">
<id name="id" column="addressid" type="int">
<generator class="increment"></generator>
</id>
<property name="address" column="address" type="string"></property>
<set name="user" cascade="save-update" inverse="true">
<key column="addressid" not-null="true"></key>
<one-to-many class="com.pojo.Myuser"/>
</set>
</class>
</hibernate-mapping>
Myuser.hbm.xml :
<hibernate-mapping>
<class name="com.pojo.Myuser" table="myuser">
<id name="id" column="userid" type="int">
<generator class="increment"></generator>
</id>
<property name="name" column="name" type="string"></property>
<many-to-one
name="address"
column="addressid"
class="com.pojo.Myaddress"
cascade="save-update"
not-null="true"><!-- 联级保存和更新-->
</many-to-one>
</class>
</hibernate-mapping>
Myuser类 的属性 :
private int id;
private String name;
private Myaddress address;
Myaddress类的属性 :
private int id;
private String address;
private Set user = new HashSet();
测试 :
Session se = this.getSession();
System.out.println(se);
Transaction tr = se.beginTransaction();
Myaddress ad1 = new Myaddress();
ad1.setAddress("湘乡");
Myuser m = new Myuser("koo");
Myuser m1 = new Myuser("jade");
m.setAddress(ad1);
m1.setAddress(ad1);
ad1.getUser().add(m);
ad1.getUser().add(m1);
se.save(ad1);
tr.commit();
se.close();
双向一对多关联 ,实际上是 “一对多” 与 “多对一” 关联组合 .
也就是说必须在主控配置单向一对多关系的基础上,在被控方配置与其对应的多对一关系.
(一个地址住多个人 )
<mapping resource="com/pojo/Myuser.hbm.xml"/>
<mapping resource="com/pojo/Myaddress.hbm.xml"/>
Myaddress.hbm.xml :
<hibernate-mapping>
<class name="com.pojo.Myaddress" table="myaddress">
<id name="id" column="addressid" type="int">
<generator class="increment"></generator>
</id>
<property name="address" column="address" type="string"></property>
<set name="user" cascade="save-update" inverse="true">
<key column="addressid" not-null="true"></key>
<one-to-many class="com.pojo.Myuser"/>
</set>
</class>
</hibernate-mapping>
Myuser.hbm.xml :
<hibernate-mapping>
<class name="com.pojo.Myuser" table="myuser">
<id name="id" column="userid" type="int">
<generator class="increment"></generator>
</id>
<property name="name" column="name" type="string"></property>
<many-to-one
name="address"
column="addressid"
class="com.pojo.Myaddress"
cascade="save-update"
not-null="true"><!-- 联级保存和更新-->
</many-to-one>
</class>
</hibernate-mapping>
Myuser类 的属性 :
private int id;
private String name;
private Myaddress address;
Myaddress类的属性 :
private int id;
private String address;
private Set user = new HashSet();
测试 :
Session se = this.getSession();
System.out.println(se);
Transaction tr = se.beginTransaction();
Myaddress ad1 = new Myaddress();
ad1.setAddress("湘乡");
Myuser m = new Myuser("koo");
Myuser m1 = new Myuser("jade");
m.setAddress(ad1);
m1.setAddress(ad1);
ad1.getUser().add(m);
ad1.getUser().add(m1);
se.save(ad1);
tr.commit();
se.close();