【发布时间】:2015-09-08 12:55:52
【问题描述】:
阅读一些休眠文档,我偶然发现了这种模式:
<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>
乍一看,这似乎很简单。每个人只有一个地址,每个地址都有一个人。
但是在数据库中,这种模式将允许一个地址有多个人引用它,休眠如何在没有列表的情况下解决这个映射? 一对一如何在多对一字段上拥有属性引用?我认为应该只能有多对一一对多或一对一一对一。
编辑:虽然看起来可能(如果在语义上不正确)进行一对一 一对多映射,但我的问题是关于 many-to -one 一对一。
我知道这个网站上已经有一些关于一对一与多对一的答案,但我没有在这些帖子中找到我的问题的答案。
感谢您的宝贵时间。
【问题讨论】:
-
这篇文章没有回答我的问题,因为我确实关心映射的两边。
-
只是一个问题,哪个表有外键列。在这种情况下,它是一个 Person,它的多对一关系可以表示为一对一。
-
好的,但这不是我的问题。我问,考虑到多个人可以拥有相同的地址,在地址中使用一对一是错误的吗?为什么它应该工作/不工作?