2011-11-03 56 views
0

我hava兩個實體:PhisicalPerson(PP),JuredicalPerson(JP)。我想創建電話對象。 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?

回答

2

這的確是你可以做的,但是看起來你在這裏有一個繼承關係。

PP和JP都應該擴展一個通用的基本實體Person,它是Person實體,它應該有一個電話列表。電話實體將只有一個與Person的ManyToOne關聯。

這是假設電話實體需要知道其擁有的人。也許單向關聯在這裏會更有意義。在這種情況下,使用連接表(或兩個,如果你不想要這個繼承關係),會更有意義。