Несколько сопоставленных суперклассов допускаются в одной иерархии наследования. В спецификациях об этом прямо не говорится, но спецификация JPA 2.0 явно не запрещает множественные сопоставленные суперклассы, а в другом контексте это относится к случаю с множественными сопоставленными суперклассами в одной иерархии:
Тип доступа по умолчанию для иерархии объектов определяется
размещение картографических аннотаций на атрибутах объекта
классы и сопоставленные суперклассы иерархии сущностей , которые не
явно указать тип доступа.
Это означает, что вы можете делать следующее:
@MappedSuperclass
public class FirstMapped {
String firstVal;
}
@MappedSuperclass
public class SecondMapped extends FirstMapped {
String secondVal;
}
@Entity
public class ExtendingEntity extends SecondMapped {
@Id int id;
}
Сопоставленный суперкласс не может быть корнем наследования сущностей. Корень наследования сущности должен быть сущностью, как сказано в документации . С EclipseLink добавление @Inheritance к одному из отображенных суперклассов в примере выше молча игнорируется. Добавление @Inheritance к ExtendingEntity работает должным образом - оно становится корнем иерархии наследования объектов.
В общем случае отображаемые суперклассы предназначены только для повторного использования отображений и не являются частью наследования сущностей.
Если это не ответит на ваш вопрос, будет полезно, если вы сможете поделиться этими «ошибками заголовка».