【发布时间】:2019-03-30 13:22:27
【问题描述】:
我正在使用具有 3 个抽象类和 2 个具体类的 JPA JOINED 继承策略。 像这样(代码减少例如目的):
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
abstract class Employee {
@Id
private Long id;
private String firstName;
private String secondName;
}
@Entity
abstract class ProjectManager extends Employee {
@OneToMany(mappedBy="manager")
private List<Developer> developers;
}
@Entity
abstract class Developer extends Employee {
@ManyToOne
@JoinColumn(name="project_manager_id")
private ProjectManager manager;
}
@Entity
class JavaProjectManager extends ProjectManager {
private String someCustomProperty;
}
@Entity
class JavaDeveloper extends Developer {
private String skill;
}
这样,JPA 创建了 5 个表。但是其中一张表,抽象 ProjectManager 它是空的。我的意思是,由于继承策略,ProjectManager 表只有 ID 列。
我的问题是:如何避免 ProjectManager 抽象类的额外表,但保持相同的类层次结构?
我无法删除 ProjectManager 类上的 @Entity,因为我仍然需要与 Developer 类的双向关系。
编辑:
另外,我不希望将开发人员 OneToMany 从 ProjectManager 转移到 JavaProjectManager,因为我有更多从 ProjectManager 扩展的类并且需要开发人员。
【问题讨论】:
标签: java database hibernate jpa orm