Hibernate单向“一对一”关联

Posted zjm701

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate单向“一对一”关联相关的知识,希望对你有一定的参考价值。

1. 基于外键关联单向“一对一”关联
其中指定many-to-one的unique="true",为单向“一对一”,不指定就是单向“多对一”

<class name="Person">
    <id name="id" column="personId"><generator class="native"/></id>
    <many-to-one name="address" column="addressId" unique="true" class="Address" />
</class>

2. 基于连接表单向“一对一”关联,是一种很少见的情况,不推荐使用
其中指定many-to-one的unique="true",为单向“一对一”,不指定就是单向“多对一”

<class name="Person">
    <id name="id" column="personId"><generator class="native"/></id>
    <join table="PersonAddress" optional="true">
        <key column="personId" unique="true"/>
        <many-to-one name="address" column="addressId"  unique="true" class="Address" not-null="true"/>
    </join>
</class>

无论使用使用上面哪种方式,关联是单向的,另外一端无需额外配置

<class name="Address">
    <id name="id" column="addressId"><generator class="native"/></id>
</class>

3. 基于主键关联向“一对一”关联,不常用,通常使用一个特定的id 生成器并需要转变关联的方向

<class name="Person">
    <id name="id" column="personId"><generator class="native"/></id>
 </class>

<class name="Address">
    <id name="id" column="personId">
        <generator class="foreign">
            <param name="property">person</param>
        </generator>
    </id>
    <one-to-one name="person" constrained="true"/>
</class>























以上是关于Hibernate单向“一对一”关联的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate,关系映射的多对一单向关联多对一双向关联一对一主键关联一对一外键关联多对多关系关联

hibernate关联映射

SSH进阶之路Hibernate映射——一对一单向关联映射

hibernate 之 关联映射的基于外键的单向一对一映射

hibernate基础07:关联关系映射之基于外键单向一对一

SSH进阶之路Hibernate映射——一对一双向关联映射