我有两个实体: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?
答案 0 :(得分:2)
这确实是你能做的,但看起来你在这里有继承关系。
PP和JP都应该扩展一个共同的基本实体Person,它是应该有一个电话列表的Person实体。然后,Phone实体只与Person有一个ManyToOne关联。
这假设Phone实体需要了解其拥有者。也许单向关联在这里会更有意义。在这种情况下,使用连接表(或两个,如果你不想要这种继承关系),会更有意义。