首页 > 解决方案 > 混合 Hibernate 继承策略

问题描述

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

[MapInheritance(MapInheritanceType.ParentTable)]  //this means that store employee specific fields in person table
public partial class Employee: Person  
{}

我想在 Java 端使用相同的方法,但是在 Hibernate 中,我们在父类中指定策略。我们有以下结构:在此处输入图像描述

在此处输入图像描述

我不想要基类的表。我想将人员和员工存储在用户表中。和客户在自己的桌子上。

但似乎hibernate在这方面存在缺陷,并要求为所有分支提供一个层次结构策略。我希望能够更改较低分支机构的政策。

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

标签: javahibernatejpa-2.1

解决方案


您可以使用@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 :

  • ID
  • 创建于
  • 我的专栏

推荐阅读