双向 一对多

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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值