java - 混合 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 中实现这一点?
解决方案
您可以使用@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
- 创建于
- 我的专栏
推荐阅读
- angular - Angular 2 - ControlValueAccessor - (ngModelChange) 未触发
- angular - NgFor 中的 ReactiveForm
- awk - awk 的奇怪行为
- oracle-apex - 基于多个表的可更新交互式网格
- regex - SSI:使用正则表达式解析变量
- ssis - 使用 SSIS 2008 R2 检索两个星号之间的字符串中的值
- java - 从 json 文件中获取动态键和值
- c# - LINQ 查询。此上下文仅支持原始类型或枚举类型
- java - 在 Windows 上安装 liquibase 并出现 java 错误
- javascript - 如何在新标签中打开 amcharts.com 信用链接