hibernate映射总结详解: 按主键映射一对一关联关系

. 映射实体关联关系   ---   一对一关联关系   ---   按主键映射

如果customer表和 address表定义成如下关系:

Customers

Addresses

Id   <pk>

Id   <pk> <fk>

Name

City

 

Street

 

Province

 

Zipcode

          

Addresses表的idaddresses的主键,同时作为外键关联customers表。

customer.hbm.xml中,用<one-to-one>元素来映射customer类的address属性:

<one-to-one name=address class=mypack.addresscascade=all>

address.hbm.xml中,用<one-to-one>元素来映射address类的customer属性:

<one-to-one name=customer class=mypack.customerconstrained =true>

<one-to-one>元素的constrained 属性为true,表明addresses表的id主键同时作为外键参照customers表。在address.hbm.xml中,必须为oid使用foreign标识符生成策略:

<id name=id type=long column=id>

   <generator class=foreign>

      <param name=property>customer</param>

   </generator>

</id>

如果使用foreign标识符生成策略,Hibernate会使address对象与关联的customer对象共享一个oid

总结:一对一按主键映射,用<one-to-one>写在每个one方。在被关联即address.hbm.xml映射文件中<one-to-one>元素要加上constrained=true属性。并且id要用foreign标识符策略。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值