如果我有两张桌子,
Person
PhoneNumbers
因为它有一对多的关系,我是否必须手动创建第三个表,如person_phone
,或者Hibernate会自动执行此操作吗?
答案 0 :(得分:4)
如果是一对多关系,则不需要第三个表; PhoneNumbers
将包含Person
表的外键。
答案 1 :(得分:2)
即使你不需要第三个表,你可以拥有第三个表(例如,为了优化目的)。在这种情况下,您可以照常映射关系,并添加@JoinTable注释:
http://download.oracle.com/javaee/6/api/javax/persistence/JoinTable.html
或者,您可以在Hibernate文档中找到有关它的更多信息(请参阅第5.1.7.1节。使用外键或关联表):
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#d0e7541
答案 2 :(得分:0)
我是否必须手动创建第三个表格,如
person_phone
?
不,你没必要。
考虑这种关系。这是一对多。即一个人可能有很多电话号码。如果没有Hibernate,你会如何映射?一个表为Person,另一个表为PhoneNumbers,其中包含PersonsId的外键。这就是Hibernate将要做的事情,除非你另有指示,正如partenon所提到的那样。