我有这种奇怪的等级:
A
是抽象的(但它是一个实体)B
(摘要)和C都扩展了类A
(TABLE_PER_CLASS)。B
也会按类D
和E
进行扩展,但这次是JOINED。我希望ID
课程的A
成为所有其他课程的ID
。
可以这样做吗?
我得到ID的奇怪错误。任何人都可以告诉我如何映射?
我就这样做了:
@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 {
答案 0 :(得分:1)
虽然在继承树中混合继承策略可以完成(https://stackoverflow.com/a/3916998/131929引用Java Persistence with Hibernate - > 5.1.5混合继承策略(p207-p210))我和我认识的其他人建议反对它。
旁注,我建议你总是使用@MappedSuperclass
而不是@Entity
来抽象类。