jpa使用映射的超类加入了继承策略

时间:2011-12-29 03:01:10

标签: hibernate jpa

我有一个类似于以下

的继承层次结构
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
abstract BaseEntity //all persistable entity extends this

我想为以下内容采用联合继承策略。使用Employee和Doctor的表格。我该怎么做呢将@MappedSuperclass on Person工作???

abstract Person extends BaseEntity
Employee extends Person
Doctor extends Person

1 个答案:

答案 0 :(得分:2)

你正在倒退。使用BaseEntity进行实体继承不是您想要的:您永远不会有从一个实体到BaseEntity的关联。因此,BaseEntity应该是一个没有任何注释的常规类,或者如果它有一些映射注释,则应该是MappedSuperclass。

相反,你很可能会有一些与其他人有联系的实体,如果他们是医生或雇员,他们就不会有所照顾。因此,人,医生或员工之间的实体继承是有道理的。如果不是这样,并且每个实体都引用了医生或员工,那么Person也应该是MappedSuperclass。