Hibernate:多对多关系表作为实体

时间:2013-10-30 15:27:47

标签: hibernate many-to-many hibernate-mapping

问题在于标题:

如何将多对多关系表作为实体?

1 个答案:

答案 0 :(得分:5)

我想说,你的问题非常合理。看一下这个doc部分:Chapter 24. Best Practices。摘录:

  

不要使用异国情调的关联映射:

     

真正的多对多关联的实际测试用例很少见。最   当你需要存储在“链接”中的其他信息时   在这种情况下,使用两个一对多要好得多   与中间链接类的关联。事实上,大多数协会   是一对多和多对一的。出于这个原因,你应该继续   使用任何其他协会风格时要小心。

我们正在处理的方式是引入配对对象。因此,如果Employee有很多Contacts,我们可以EmployeeContact。通过这种方式,我们可以获得很多收益,因为我们可以使用更多/新属性(IsMain,IsActive等)来丰富EmployeeContact。

在这种情况下,双方的映射是

  • 员工有one-to-many(设置)员工联系
  • 联系人已one-to-many(设置) EmployeeContacts
  • EmployeContact有many-to-one(关系)员工
  • EmployeContact有many-to-one(关系)联系

所以,最后,映射是常见的,但我们可以使用子查询等搜索Employee或Contact。

注意:在这种情况下,如果配对表有自己的代理键,例如EmployeeContactId。它可以随时添加..例如身份......