Java 混合Hibernate继承策略

Java 混合Hibernate继承策略,java,hibernate,jpa-2.1,Java,Hibernate,Jpa 2.1,在C中,我们使用的ORM允许我们在每个子类/子类中指定存储它的位置: [MapInheritance(MapInheritanceType.ParentTable)] //this means that store employee specific fields in person table public partial class Employee: Person {} 我想在Java端使用相同的方法,但在Hibernate中,我们在父类中指定策略 我不想要基类的表。我想在用户表中

在C中,我们使用的ORM允许我们在每个子类/子类中指定存储它的位置:

[MapInheritance(MapInheritanceType.ParentTable)]  //this means that store employee specific fields in person table
public partial class Employee: Person  
{}
我想在Java端使用相同的方法,但在Hibernate中,我们在父类中指定策略

我不想要基类的表。我想在用户表中存储person和employee。和客户在自己的表中

但hibernate在这方面似乎有缺点,它要求所有分支都有一个层次结构策略。我希望能够改变下级分支机构的政策

如何在jpa或hibernate中实现这一点?

您可以使用@MappedSuperclass实现这一点

同一继承层次结构中允许一个@MappedSuperclass或多个@MappedSuperclass

@MappedSuperclass
public class FirstMapped {
    @Id int id;
}

@MappedSuperclass
public class SecondMapped extends FirstMapped {
    String createdOn;
}

@Entity
public class MyTable extends SecondMapped {
    String myColumn;
}
这些类必须只创建一个表:MyTable和列:

身份证件 createdOn 菌柱
不是。您可以绕过此限制,但不适用于单表+每类表策略。你的企图是什么?。我有一个与您相同的Base.java,还有像Option.java、Application.java这样的类,它们扩展了Base.java。结果表只是:选项和应用程序。这就是您需要的吗?我相信:'我想在用户表中存储person和employee。“客户在其自己的表中”是一个关于OP想要什么的非常明确的声明,并且与“这些类必须只创建一个表”是直接对立的。我是按照这个声明来指导的:我不想要一个表作为基类。另一方面,我们都知道问题负责人有时不清楚自己需要什么。最后,我将等待他的反馈。