2)单向1-1的关系映射(通常采用无连接表的单向1-1)
单向1-1的POJO与N-1没有丝毫区别,映射配置也非常相似,只需将原有的many-to-one元素增加unique="true"属性,
用来表示N的一端也是唯一的。
2.1)无连接表的单向1-1
<hibernate-mapping>
<class name="Person">
<id name="personid">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<many-to-one name="address" column="addressId" unique="true"/>
</class>
<class name="Address">
<id name="adressid">
<generator class="identity"/>
</id>
<property name="addressdetail"/>
</class>
</hibernate-mapping>
2.1)有连接表的单向1-1(这种情况比较少见)
<hibernate-mapping package="lee">
<class name="Address">
<id name="addressid">
<generator class="identity"/>
</id>
<property name="addressdetail"/>
</class>
<class name="Person">
<id name="personid">
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<join table="join_table">
<key column="personid"/>
<many-to-one name="address" unique="true"/>
</join>
</class>
</hibernate-mapping>
2.1)基于主键的单向1-1
基于主键的持久化类不能拥有自己的主键生成器,它的主键由关联类负责生成。增加one-to-one元素来映射关联属性,必须为
one-to-one元素增加constrained="true"属性,表明该类的主键由关联类生成。
<hibernate-mapping>
<class name="Person">
<id name="personid">
<generator class="foreign">
<param name="property">address</param>
</generator>
</id>
<property name="name"/>
<property name="age"/>
<one-to-one name="address" constrained="true"/>
</class>
<class name="Address">
<id name="addressid">
<generator class="identity"/>
</id>
<property name="addressdetail"/>
</class>
</hibernate-mapping>