阅读一些hibernate文档,我偶然发现了这种模式:
<class name="Person">
<id name="id" column="personId">
<generator class="native"/>
</id>
<many-to-one name="address"
column="addressId"
unique="true"
not-null="true"/>
</class>
<class name="Address">
<id name="id" column="addressId">
<generator class="native"/>
</id>
<one-to-one name="person"
property-ref="address"/>
</class>
乍一看,这看起来非常简单。每个人都有一个且只有一个地址,每个地址都有一个人。
但是在数据库中,这种模式允许一个地址有多个Person引用它,hibernate如何在没有列表的情况下解析这个映射? 一对一如何在多对一领域拥有属性参考?我认为应该只有多对一的&lt; =&gt;一对多或一对一&lt; =&gt;一对之一。
编辑:尽管似乎有可能(如果不是在语义上正确的话)做一对一的&lt; =&gt;一对多映射,我的问题是关于多对一&lt; =&gt;一到一个
我知道在这个网站上已经有一对一与多对一的答案,但我在这些帖子中没有找到我的问题的答案。
感谢您的时间。
答案 0 :(得分:1)
如果您在数据库中有唯一约束,那么两个人就不可能拥有相同的地址。
但是,如果缺少约束并且确实存在多个具有相同地址的人,则此映射不正确,并且在访问person
关联时可能会出现异常或错误/不可预测的结果{1}}实体。