2

我的类结构看起来像这样......我在这里实现了两个单独的策略,但是根类的继承策略,即 InheritanceType.JOINED 正在整个层次结构中使用......

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "typeName", discriminatorType = DiscriminatorType.STRING, length =    100)
@Table(name="table_A")
public abstract class A{
...
}


@Entity
@Table(name = "table_B")
@PrimaryKeyJoinColumn(name = "ID_B")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorValue("SVC")
public abstract class B extends A {
...
}

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

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

当我创建一个'D'的实例并尝试持久化它时,hibernate正在寻找一个名为'D'的表......
我发现有几个人问同样的问题......但答案对我没有帮助...

混合连接和单表继承以及查询所有对象- 相同的问题..
如何将继承策略与 JPA 注释和 Hibernate 混合?- 将 single_table 与加入的混合......这对我来说没有帮助..

4

1 回答 1

2

JPA 规范不允许您在继承树中混合策略;它要求您在根实体中设置继承策略。JDO 是唯一允许混合策略的规范。您可能会找到允许它的 JPA 实现,但它是不可移植的

于 2012-04-04T06:52:06.697 回答