在OpenJPA中为超类和子类使用相同的类型鉴别器

时间:2017-03-22 10:31:27

标签: hibernate jpa openjpa

我正在尝试使用OpenJPA复制hibernate的行为,我试过类似的东西:

超类:

@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{..

导致异常表明两个类不能具有相同的鉴别器。

仅使用Annotations是否有解决方案?

1 个答案:

答案 0 :(得分:1)

所以你要说的是你想要持久化A类型的对象和类型为B的对象,当它们被检索时,它们被实例化为类型{{的实例1}?所以A将不再是B !!

我找不到任何会被视为好主意的情况。任何强制所有具体类型具有不同鉴别值的JPA实现都在做正确的事情。因此,我们可以得出结论B行为是应该的,并且“解决它”是一个坏主意。