hibernate映射总结详解: 映射一对多双向自身关联关系

 
Ⅲ. 映射实体关联关系---  一对多关联关系  ---  一对多双向自身关联映射:
以category为例,它代表商品类别,存在一对多双向关联。如:食品类别包括蔬菜类型和水果类型,水果类型又包括苹果类别和桔子类别。每一种类别代表一个category对象,这些对象形成了树型数据结构。每个category可以和一个父类别catetory对象关联,同时还可以和一组子类别category对象关联。为了表达这种一对多双向自身关联,可以在category类中定义两个属性parentCategory(引用父类别对象)和 childCategory(引用一组子类别对象)。
Category 表两个字段: id 和name,category_id
Category 持久化类代码片段如下:
private Category parentCategory;
private Category childCategory;
 
public Category getParentCategory(){………}
public void setParentCategory(){………}
public Category getChildCategory(){………}
public void setChildCategory(){………}
 
Category 类的映射文件如下:
……
<many-to-one name= “parentCategory” column=“category_id” class=“mypack.Category”/>
 
<set name= “childCategory”cascade=“save-update” inverse=“true”>
    <key column= “category_id”/>
    <one-to-many class= “mypack.Category”/>
 </set> 
……
注意:这个映射文件中包含<many-to-one>和<set>这个以下两种映射类型中的元素。它引用了parentCategory和childCategory属性来解决父子之间的关联。
总结:一对多双向自身关联关系,在映射文件中用<many-to-one>映射对应的one属性;用<set>映射对应的many属性。
 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值