现在的位置: 首页 > 综合 > 正文

hibernate 一对一的外键关联

2013年02月24日 ⁄ 综合 ⁄ 共 1216字 ⁄ 字号 评论关闭

一对一的外键关联: 
不共享主键,而是两表可以有一个外键关系。一张表有着引用被关联表的主键的一个外键列。 

  1. <class name="User" table="USER" dynamic-insert="true" dynamic-update="true"   
  2.         mutable="false">  
  3. <id
    name="userId" column="USER_ID" type="integer">  
  4.     <generator class="native"/>  
  5. </id>  
  6. <property
    name="userName" type="string" column="user_Name"/>  
  7. <!--
    在User里面添加维护信息,也就是把User作为维护端 -->  
  8. <many-to-one
    name="address" class="Address"  
  9.     column="ADDRESS_ID" unique="true" cascade="save-update"/>
      

(这里用的many-to-one,而不是我们共享主键里面的one-to-one,因为:你不在乎关联的目标端是什么, 
因此可以像对待没有多端的対一关联对待他。通过unique来强制说明只存在一的对应关系) 
反向属性引用: 

  1. <class name="Address" table="ADDRESS">  
  2.     <id
    name="addressId" column="ADDRESS_ID" type="integer">  
  3.         <generator class="native">  
  4.         </generator>  
  5.     </id>  
  6.     <property
    name="street" type="string" column="street"/>  
  7.     <property
    name="city" type="string" column="city"/>  
  8.     <!--
    property-ref="address"告诉hibernateAddress
    -->  
  9.     <!--
    基于外键的的唯一约束,一般不建议这么做,这个是不需要的 -->  
  10.     <one-to-one
    name="user" class="User" property-ref="address"/>  

插入: 

  1. Address
    address = 
    new Address("street""city");  
  2.   
  3. user.setAddress(address);  
  4. //不需要  
  5.         address.setUser(user);  

抱歉!评论已关闭.