【发布时间】:2013-11-10 07:22:18
【问题描述】:
问题在标题中:
如何将多对多关系表作为实体?
【问题讨论】:
标签: hibernate many-to-many hibernate-mapping
问题在标题中:
如何将多对多关系表作为实体?
【问题讨论】:
标签: hibernate many-to-many hibernate-mapping
我想说,你的问题很有道理。看看这个文档部分:Chapter 24. Best Practices。摘录:
不要使用奇异的关联映射:
真正多对多关联的实际测试用例很少见。最多 您需要存储在“链接”中的其他信息的时间 表”。在这种情况下,最好使用两个一对多 与中间链接类的关联。事实上,大多数协会 是一对多和多对一。因此,您应该继续 使用任何其他关联样式时要谨慎。
我们处理这个问题的方法是引入配对对象。所以,如果有一个Employee 有很多Contacts,我们可以有EmployeeContact。这样我们可以收获很多,因为我们可以用更多/新的属性(IsMain、IsActive 等)丰富 EmployeeContact
在这种情况下,两边的映射就是
one-to-many(设置)EmployeeContacts
one-to-many(设置)EmployeeContacts
many-to-one(关系)员工
many-to-one(关系)联系方式
所以,最后,映射是正常的,但我们可以使用子查询等搜索员工或联系人。
注意:在这种情况下是合适的,如果配对表有自己的代理键,例如员工联系人 ID。它可以随时添加..例如有身份...
【讨论】: