2017-03-22 30 views
1
使用超類和子類相同類型鑑別

我試圖複製休眠的使用OpenJPA的行爲,我想是這樣:OpenJPA中

父類:

@Entity 
@Table(name = "A") 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "TYPE") 
@DiscriminatorValue("A") 
public class A{... 

亞綱:

@Entity 
@DiscriminatorValue("A") 
public class B extends A{.. 

導致異常指示兩個類不能具有相同的鑑別符。

是否有解決方案通過僅使用註釋?

+0

抽象類不應該需要一個「值」 –

+0

現在它不是abstruct。 –

回答

1

所以你要說的是,你想要堅持一個A類型的對象和B類型的對象,當它們被檢索到時,它們都被實例化爲A類型的實例?所以B將不再是B

我找不到任何情況,那將被視爲好主意。任何強制所有具體類型具有不同鑑別值的JPA實現都是正確的。因此我們可以得出結論,OpenJPA行爲是應該的,「解決它」是一個壞主意。

+0

我知道這是一個糟糕的設計,雖然它與hibernate一起工作。我只是試圖將它遷移到openjpa,而有很多業務邏輯依賴關係可以打破,如果我會改變這個設計,這太昂貴了。我需要兩個與同一個表(一個子類和超類)相關的實體,它們具有相同的類型鑑別器。 –