2011-12-02 276 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'作为字段? –

回答