Имеет ли смысл использовать аннотацию JPA 2.0 @Inheritance для подкласса? - PullRequest
1 голос
/ 24 августа 2011

Мне было интересно, имеет ли смысл (или даже правильно ли) аннотировать каждый класс иерархии с помощью @Inheritance.Например, предположим, что у нас есть следующая простая иерархия:

public class A { ... }
public class B extends A { ... }
public class C extends A { ... }

Чтобы сохранить объекты этих классов, мы бы аннотировали класс A следующим образом:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class A { ... }

Мой вопрос таков:нам нужно добавить аннотацию @Inheritance к классам B и C?Как сказано в Javadoc: «Это указано в классе сущностей, который является корнем иерархии классов сущностей.» поэтому мой потенциальный ответ: нет!Но если мы их аннотируем, имеет ли это вообще какое-либо значение или полностью игнорируется?

Спасибо

1 Ответ

0 голосов
/ 24 августа 2011

Вам необходимо добавить аннотацию @Inheritance к подклассам, если вам нужно использовать InheritanceType, отличный от используемого по умолчанию.

Как вы знаете, поддерживается 3 типа наследования. Таблица для иерархии классов, Таблица для подкласса и Таблица для конкретного класса. InheritanceType.SINGLE_TABLE используется по умолчанию, и все ваши родительские объекты классов и подклассов будут помещены в одну таблицу.

Если вы хотите использовать InheritanceType.JOINED или InheritanceType.TABLE_PER_CLASS, вам нужно добавить аннотацию @Inheritance.

...