我有一个奇怪的层次结构:
- 类
A
是抽象的(但它是一个实体) B
类(抽象)和 C 都扩展了A
类 (TABLE_PER_CLASS)。- 类
B
也由类D
和E
扩展,但这次它是 JOINED。
我希望 A
类的 ID
成为所有其他类的 ID
。
这可以做到吗?
我收到奇怪的 ID 错误。谁能告诉我如何绘制 map ?
我就是这样做的:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class A {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
protected Integer id;
}
C类:
@Entity
@Table(name = "managers")
public class C extends A {
B类:
@Entity
@Table(name = "bb")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.STRING)
public abstract class B extends A {
C、D类:
@Entity
@Table(name = "cc"/"dd")
@DiscriminatorValue("CC"/"DD")
public class C (or D) extends B {
最佳答案
虽然在继承树中混合继承策略可以完成(https://stackoverflow.com/a/3916998/131929指Java Persistence with Hibernate -> 5.1.5 混合继承策略 (p207-p210)) 我和我认识的其他人都建议不要这样做。
旁注,我建议您始终使用 @MappedSuperclass
而不是 @Entity
作为抽象类。
关于java - Hibernate 继承 JOINED + TABLE PER CLASS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22760554/