使用什么表结构(休眠)

时间:2011-11-03 08:16:09

标签: hibernate database-design entity-relationship

我有两个实体:PhisicalPerson(PP),JuredicalPerson(JP)。我想创建Phone对象。 JP有很多手机,PP有很多手机(一对多关系)。所以在Phone对象中我必须为这种关系创建2列:

class Phone {

 @JoinColumn(name="ppId",nullable=true)
 @ManyToOne
 public PhisicalPerson getPhisicalPerson() {...}

 @JoinColumn(name="jpId",nullable=true)
 @ManyToOne
 public JuredicalPerson getJuredicalPerson() {...}

 // number, city code, additional number and other fields

}

这是正确的实施吗?或者可能最好创建不同的实体:PhisicalPersonPhone和JuredicalPersonPhone?

1 个答案:

答案 0 :(得分:2)

这确实是你能做的,但看起来你在这里有继承关系。

PP和JP都应该扩展一个共同的基本实体Person,它是应该有一个电话列表的Person实体。然后,Phone实体只与Person有一个ManyToOne关联。

这假设Phone实体需要了解其拥有者。也许单向关联在这里会更有意义。在这种情况下,使用连接表(或两个,如果你不想要这种继承关系),会更有意义。