Несколько @MappedSuperclass - PullRequest
15 голосов
/ 03 июня 2011

Я использую JPA 2.0 и EclipseLink 2.2.0.

У меня есть @MappedSuperclass, AbstractEntity, который является основой для всех моих сущностей, предоставляющих PK и столбцы аудита.

IЯ хочу, чтобы другой @MappedSuperclass расширял этот класс и был корнем для стратегии наследования TABLE_PER_CLASS.

В настоящее время при сборке с Maven я получаю ошибки заголовка.

Допускается ли несколько @MappedSuperclass виерархия наследования?

Ответы [ 2 ]

24 голосов
/ 13 мая 2012

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

В общем случае отображаемые суперклассы предназначены только для повторного использования отображений и не являются частью наследования сущностей.

Если это не ответит на ваш вопрос, будет полезно, если вы сможете поделиться этими «ошибками заголовка».

3 голосов
/ 25 января 2012

Допускается ли множественное @MappedSuperclass в иерархии наследования?

Да , я сделал это. Чтобы иметь возможность ответить на ваш вопрос об ошибках maven, вам необходимо предоставить трассировку стека и код ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...