不共享主键,而是两行可以有一个外键关系。一张表有着引用被关联表的主键的一个外键列。(这个外键约束的源和目标甚至可以是相同的表,称作自引用关系)
我们现在使用一对一的外键关联,在MYUSER表中添加一个ADDRESS_ID列:
<class name="User" table="MYUSER">
......
<many-to-one name="address" class="Address" column="ADDRESS_ID" cascade="save-update" unique="true"/>
</class>
在xml中,这个关联的映射元素是<many-to-one>---而不是你可能期待的<one-to-one>。额外的约束unique="true"强制这个关系为真正的一对一。声明一个特定的address最多只能被一位用户(User)使用。
pom.xml:
resources/hibernate.cfg.xml:
pojo/User.java:
pojo/User.hbm.xml:
pojo/Address.java:
pojo/Address.hbm.xml:
util/HibernateUtil.java:
util/Manager.java:
表结构:
输出sql: