Ваш базовый класс должен быть помечен TABLE_PER_CLASS
.Вот пример из OpenJPA :
@Entity
@Table(name="MAG")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Magazine {
...
}
@Entity
@Table(name="TABLOID")
public class Tabloid
extends Magazine {
...
}
В соответствии с JPA JavaDocs , аннотация @Inheritance
должна быть указана в корне иерархии классов:
Определяет стратегию наследования, которая будет использоваться для иерархии классов сущностей.Он указывается в классе сущностей, который является корнем иерархии классов сущностей.
В спецификации не указывается, может ли эта аннотация размещаться в подклассе, и поэтому ее поведение не определено.
Итак, чтобы ответить на вопрос, который вы задали в комментариях, если у вас есть такая иерархия:
SubSub -> Sub -> Base
Вам нужно только аннотировать Base
с помощью @Inheritance(strategy = TABLE_PER_CLASS)
.