2011-12-02 275 views
1

我明白Hibernate中如何使用DiscriminatorColumn繼承映射, 但是,在我的場景中,我有更復雜的繼承模塊,我需要定義兩個Discriminator。我想爲整個繼承樹使用一個表。 基本上,父類是抽象的,它代表一個人實體,然後,我有兩個不同的抽象實現它,妻子&丈夫。所以基本上我已經需要一個鑑別器。然後爲每個(妻子&丈夫)我有不同的消息,需要堅持,所以我不需要爲每個(妻子&丈夫)創建一個鑑別器。Hibernate中的多重DiscriminatorColumn繼承映射

我想出了這個實現,但我卡住了,我怎麼從這裏繼續?

@Entity 
@Table (name="sex") 
@Inheritance (strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn (name="transaction_type", discriminatorType=DiscriminatorType.STRING) 
public abstract class Person { 
... 
} 

@Entity 
@DiscriminatorValue("wife") 
public class Wife extends Person { 
... 
} 

現在,我如何將一個鑑別器列放在妻子類上,就像我對父母做的一樣?

+0

爲什麼需要「第二次鑑別」?這個不同的消息是Person的另一個子類的一個指示器嗎?如果是這樣 - 你不能創建另一個子類嗎?如果沒有,你可以只使用一個普通的字段和一些布爾值來表示將在其中保存哪種「消息」? –

+0

@PiotrNowicki,每條消息都是不同的類,它包含了不同的字段,當然,這些消息是根據Person的類型進行區分的,妻子有它自己的消息,而丈夫有它自己的消息。 – stdcall

+0

那麼'Wife'和'Husband'實體不能分別將'WifeMessage'和'HusbandMessage'作爲字段? –

回答