为什么hibernate中的单向多对一关联是可选的

时间:2014-01-06 19:23:33

标签: java hibernate

hibernate document表示A unidirectional many-to-one association on a join table is common when the association is optional.

请告诉我为什么在这里被称为optional

<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" 
            not-null="true"/>
    </join>
</class>

1 个答案:

答案 0 :(得分:0)

这也是因为你要么注释或定义已经加入的实体的映射。

此外,它是可选的原因是因为@JoinColumn是在默认列上完成的,该列是通过连接所有者端的名称+ _ +主键列的名称来计算的

所以基本上,如果您没有使用列名指定@JoinColumn注释,它将尝试使用地址加入@ManyToOne中hibernate关系中的名称+ _ < / strong> + id (因为这是Person表的主键。 所以默认连接将在address_id上发生。

如果您将主键更改为personId,则联接将位于 address_personId

希望我能够正确解释