Ответ 1
В одной иерархии наследования допускаются множественные сопоставленные суперклассы. В спецификациях это прямо не сказано, но спецификация 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 к функции ExtendedEntity работает как ожидалось - оно становится корнем иерархии наследования объектов.
В целом отображаемые суперклассы предназначены только для разрешения повторного использования сопоставлений, и они не являются частью наследования объектов.
Если это не ответит на ваш вопрос, это поможет, если вы можете поделиться этими "ошибками заголовка".