一、一对唯一外键关联映射——单向
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>