hibernate 映射关系 一对多/多对一

 一对多:

类 Child:
public  class  Child   {
        private  Integer  id  ;
        private  String  childname  ;
        private  Set<Toy>  toys  =  new  HashSet<Toy>();
     ...
映射文件:
        < class  name = "Child"  >
              < id  name = "id"  >
                    < generator  class = "native"  ></ generator >
              </ id >
              < property  name = "childname"  ></ property >
              < set  name = "toys"  >
                    < key  column = "childId"  ></ key >
                    < one-to-many  class = "Toy"  />
              </ set >
        </ class >

类 Toy:
public  class  Toy {
        private  Integer  id  ;
        private  String  toyname  ;
        private  Child  child  ;
     ...
映射文件:
        < class  name = "Toy"  >
              < id  name = "id"  >
                    < generator  class = "native"  ></ generator >
              </ id >
              < property  name = "toyname"  ></ property >
              < many-to-one  name = "child"  column = "childId"  class = "Child"  ></ many-to-one >
        </ class >

测试后的表结构:

Child



Toy


结论:
   从数据库的考虑
     所谓多对一,就是在另外一张表中(多的一方)有外键只想 另一方。
     在上图标表结构可以看出 toy 表中 没调数据都有指向  child 的 一个外键。
   从面相对象的思想来考虑:
     即 一个Child 对象有多个 Toy对象。所以有在 Chilc 中有集合toys属性。
     同时 一个Toy 对象属于某一个 Child 对象。所有有了 child 属性
注意:
     映射文件 中 set 集合众key 对应的外键(其他表只想 本表的外键)字段。
     so key colum 的属性是有另外一个映射文件决定。colum 属性值 要一致。
     



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值