2015-08-18 24 views
0

在我的應用程序中,我有一個會議對象,它的屬性存儲在會議表中。 我必須創建一個新對象,讓我們說「meetingNEW」具有一些不同的屬性,但其中大多數是常見的。Hibernate - 每個具體類策略的表 - 每個表的單獨ID

我在考慮使用表每個具體類的策略,但我想有兩個表的單獨的ID,而不是從超類繼承它。可能嗎?我只找到一個共同的id的例子。

我的想法是: MeetingType - >抽象超

會見MEETING_ID延伸MeetingType爲PK(表)

MeetingNEW與meetingNEW_id延伸MeetingType爲PK(表)

感謝

回答

0

爲什麼你使用Table每個具體類的策略?對於我來說,像下面的每個子類策略的表看起來像meeting_type表與常見的屬性和其他具有特定屬性與自己的PK ID的表。

@Entity @Inheritance(strategy = InheritanceType.JOINED) 
public class MeetingType { 
     @Id 
     @Column("meeting_type_id") 
     public long getId(); 
} 

@Entity @PrimaryKeyJoinColumns({ @PrimaryKeyJoinColumn(name = "meeting_id", referencedColumnName = "meeting_type_id") }) 
public class Meeting extends MeetingType { 
    @Column("meeting_id") 
    public long getMeetingId(); 
} 

@Entity @PrimaryKeyJoinColumns({ @PrimaryKeyJoinColumn(name = "meeting_new_id", referencedColumnName = "meeting_type_id") }) 
public class MeetingNew extends MeetingType { 
    @Column("meeting_new_id") 
    public long getMeetingNewId(); 
} 
+0

因爲我不想爲超類創建表,我不需要它。 我正在做一些測試,看起來有可能使用不同的PK。 – SG87

+0

好吧,我看,恕我直言,它不是一個好的數據庫設計,因爲你正在複製子類表中的公共屬性。但無論如何,你的方法是正確的抽象類和子類,但是你的子類應該有@Id列有不同的ID。 –

+0

我知道這不是最好的方法,但應用程序自5年以來就存在了,並且在每個地方更改id名稱確實是一團糟。此外,這個新表格將不會使用很多。我在抽象類中有一些共同的屬性,但它們在2個表中重複。 +1回答 – SG87

相關問題