Hibernate继承JOINED + TABLE PER CLASS

时间:2014-03-31 11:36:24

标签: java hibernate jpa

我有这种奇怪的等级:

  • A是抽象的(但它是一个实体)
  • B(摘要)和C都扩展了类A(TABLE_PER_CLASS)。
  • B也会按类DE进行扩展,但这次是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 {

1 个答案:

答案 0 :(得分:1)

虽然在继承树中混合继承策略可以完成(https://stackoverflow.com/a/3916998/131929引用Java Persistence with Hibernate - > 5.1.5混合继承策略(p207-p210))我和我认识的其他人建议反对它。

旁注,我建议你总是使用@MappedSuperclass而不是@Entity来抽象类。