我见过人们使用多对一的映射来表示一对一的关系。我也在Gavin King的一本书和文章中阅读了这篇文章。Hibernate - 为什么要使用多对一来表示一对一?
例如,如果客户可以有一个确切的送货地址和送货地址只能属于一个客户,映射给定为:
<class name="Customer" table="CUSTOMERS">
...
<many-to-one name="shippingAddress"
class="Address"
column="SHIPPING_ADDRESS_ID"
cascade="save-update"
unique="true"/>
...
</class>
这本书的原因是(引用它):
“你不关心什么是对关联的目标方面,所以你可以把它像一个到一个协会没有许多的一部分。”
我的问题是,为什么使用many-to-one
而不是one-to-one
? one-to-one
是什么使它成为many-to-one
不太理想的选择?
谢谢。
可以实现更灵活和同样的事情你能否提供一个例子来阐明你关于映射“外键关系与唯一约束”的观点?由于这种关系在逻辑上是一对一的,为什么在冬眠时将它映射为多对一呢? – KyleM 2013-03-05 22:32:36
这似乎回答_when_,但不_why _...? – 2013-07-26 09:41:11
尽管如此,不能使用'inverse =“true”'。它不适用于“多对一”。 – pavanlimo 2013-12-27 11:53:36