【问题标题】:Hibernate inheritacne JOINED + TABLE PER CLASSHibernate 继承痤疮 JOINED + TABLE PER CLASS
【发布时间】:2014-05-10 17:33:53
【问题描述】:

我有这个奇怪的层次结构:

  • A是抽象的(但它是一个实体)
  • B 类(抽象)和 C 类都扩展了A 类(TABLE_PER_CLASS)。
  • B 类也由DE 类扩展,但这次它已加入。

我希望 A 类的 ID 成为所有其他类的 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 {

【问题讨论】:

标签: java hibernate jpa


【解决方案1】:

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

旁注,对于抽象类,我建议您始终使用@MappedSuperclass 而不是@Entity

【讨论】:

    猜你喜欢
    • 2011-01-02
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多