一对一与多对一的区别,唯一=真

时间:2014-09-10 03:47:11

标签: hibernate mapping hibernate-mapping one-to-one associative

hbm文件中的两个标签如何一对一和多对一,唯一=“true”? 我刚刚了解到要获得双向一对一映射,我需要在两个hbm files.cant上使用一对一标签。我将两边都使用unique = true(hbm)多对一来获得hibernate中的双向行为?

在此link中,我找到了

<!-- In One-to-one we cannot specify the foreign key column 
         that has to be filled up
        <one-to-one name="person" class="PersonOTO_B" cascade="all"
        constrained="true"> </one-to-one>
    -->

    <many-to-one name="person" column="P_ID" unique="true"
        not-null="true" lazy="false" />

以上原因是否有效?

此致 Jayendra

1 个答案:

答案 0 :(得分:0)

如果您在应用程序启动时没有使用Hibernate生成SQL模式,那么unique = true并不意味着什么。 Hibernate不强制值的唯一性,即纯数据库函数。

如果您使用Hibernate生成数据库模式,那么它会对您已设置unique=true的任何属性设置唯一约束,但是如果您将Hibernate指向已存在的数据库,并且仅验证模式对于该数据库,Hibernate不会检查是否存在唯一约束。

这适用的其他属性(从头到尾)insertableupdateablenullable

如果你想了解如何在Hibernate中创建不同类型的关系的指南,我写了一个方便的指南,你可以找到here。只需将我的注释示例翻译成.cfg文件,或者只使用注释,就可以设置。