我是否需要在Hibernate中手动创建关系表?

时间:2011-03-04 05:08:20

标签: java mysql hibernate

如果我有两张桌子,

Person

PhoneNumbers

因为它有一对多的关系,我是否必须手动创建第三个表,如person_phone,或者Hibernate会自动执行此操作吗?

3 个答案:

答案 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所提到的那样。