<hibernate-mapping>
...
<id name="id" column="id">
<generator class="foreign">
<param name="property">user</param>
</generator>
</id>
...
<one-to-one name="user" class=".." constrained="true" />
</hibernate-mapping>
通過foreign共享主鍵值。
一、一對唯一外鍵關聯映射——單向
1. 一對唯一外鍵關聯映射是多對一關聯映射的特例,可以采用<many-to-one>標簽,指定多的一端的unique=true,這樣就限 制了多的一端的多重性為一,通過這種手段映射一對一唯一外鍵關聯
2.領域模型圖:

3.配置
Person.hbm.xml:
<class name="com.bjsxt.hibernate.Person" table="t_person">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="idCard" unique="true"/>
</class>
IDCard.hbm.xml:
<class name="com.bjsxt.hibernate.IdCard" table="t_idcard">
<id name="id">
<generator class="native"/>
</id>
<property name="cardNo"/>
</class>
二、 一對唯一外鍵關聯映射——雙向
1. 一對一唯一外鍵關聯雙向,需要在另一端(idcard),添加<one-to-one>標簽,指示hibernate如何加載其關聯對象,默認根據主鍵加載person,外鍵關聯映射中,因為兩個實體采用的是person的外鍵維護的關系,所以不能指定主鍵加載person,而要根據person的外鍵加載,所以采用如下映射方式:
<one-to-one name="person" property-ref="idCard"/>
2.領域模型圖:

3.具體配置:
Person.hbm.xml:
<class name="com.bjsxt.hibernate.Person" table="t_person">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="idCard" unique="true"/>
</class>
IDCard.hbm.xml
<class name="com.bjsxt.hibernate.IdCard" table="t_idcard">
<id name="id">
<generator class="native"/>
</id>
<property name="cardNo"/>
<one-to-one name="person" property-ref="idCard"/>
</class>