java - Hibernate 继承 JOINED + TABLE PER CLASS

标签 java hibernate jpa

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

  • A是抽象的(但它是一个实体)
  • B 类(抽象)和 C 都扩展了 A 类 (TABLE_PER_CLASS)。
  • B 也由类 DE 扩展,但这次它是 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/131929Java Persistence with Hibernate -> 5.1.5 混合继承策略 (p207-p210)) 我和我认识的其他人都建议不要这样做。

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

关于java - Hibernate 继承 JOINED + TABLE PER CLASS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22760554/

相关文章:

Java 好奇号 : Using a Float or Double for Costs in a Class

java - java 中的 Package.getPackage 返回 null

java - JBoss EAP 7 和 Ifinispan

java - 使用 Spring Data 时,我应该如何注册自定义 Hibernate 5 数据类型(BasicType)?

java - Spring JPA Repository 上的 API 数量是否会影响启动时间?

java - 添加元信息是否足以将我自己作为类(class)的附加@作者?

java - 我们可以将嵌套 map 作为其他 map 中的键吗?

java - 将数据库的结果映射到数据库中没有表的实体上

java - JPA - 在双向映射中删除子实体的问题

java - 有没有办法使用 UImanager 更改 Jradiobuttons 的字体颜色