hibernate一对一唯一外键关联映射(双向关联PersonIdCard)
一对一唯一外键关联双向,需要在另一端(idcard),添加标签,指示hibernate如何加载
其关联对象,默认根据主键加载person,外键关联映射中,因为两个实体采用的是person的外键维护的关系,
所以不能指定主键加载person,而要根据person的外键加载,所以采用如下映射方式:
1、Person的POJO类:
1public class Person {<br />2<br />3 private int id;<br />4<br />5 private String name;<br />6<br />7 private IdCard idCard;<br />8//省略setter、getter方法<br />9}
2、IdCard的POJO类:
1public class IdCard {<br />2<br />3 private int id;<br />4<br />5 private String cardNo;<br />6<br />7 private Person person;<br />8//省略setter、getter方法<br />9}
3、Person的映射文件Person.hbm.xml
1<?xml version="1.0"?><br />2<!DOCTYPE hibernate-mapping PUBLIC<br />3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><br />5<hibernate-mapping><br />6 <class name="org.apple.hibernate.Person" table="t_person"><br />7 <id name="id"><br />8 <generaTor class="native"/><br />9 </id><br />10 <property name="name"/><br />11 <many-to-one name="idCard" unique="true"/><br />12 </class><br />13</hibernate-mapping>
4、IdCard的映射文件IdCard.hbm.xml
1<?xml version="1.0"?><br />2<!DOCTYPE hibernate-mapping PUBLIC<br />3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><br />5<hibernate-mapping><br />6 <class name="org.apple.hibernate.IdCard" table="t_idcard"><br />7 <id name="id"><br />8 <generaTor class="native"/><br />9 </id><br />10 <property name="cardNo"/><br />11 <one-to-one name="person" property-ref="idCard"/><br />12 </class><br />13</hibernate-mapping>
回避现实的人,未来将更不理想。