Спящий режим:Как я могу объединить 2 класса за одним столом?
Вопрос
Итак, я новичок в Hibernate, и у меня возникла проблема.
У меня есть абстрактный класс (суперкласс, класс Super) и 5 подклассов, которые должны использовать свойства класса Super и добавлять новые свойства (новый столбец).
Итак, как я могу это сделать?Должен ли я расширить класс Super из Java или достаточно объединить классы с помощью аннотации JPA.
Вот вторая проблема.Как мне иметь 1 стол на 2 класса.Кто-то (умнее меня) посоветовал мне использовать @JoinTable, но формируя поиск с помощью Google, я думаю, мне нужно использовать @Inheritance(strategy=InheritanceStrategy.JOINED)
Могу ли я использовать @JoinTable слишком?
Нет правильного решения
Другие советы
У вас случай наследования:
- добавить
@Inheritance(stretegy=InheritanceStrategy.SINGLE_TABLE)
аннотация к вашемуSuper
- добавить
@DiscriminatorColumn
аннотация (и установка ее атрибутовname
иdiscriminatorType
) (опять же оSuper
) - по каждому подклассу
extend
тотSuper
, и добавьте аннотацию@DiscriminatorValue
, с разным значением для каждого из подклассов.
Если вы новичок в Hibernate, вам следует прочитать его документация. Объясняются стратегии наследования здесь и объясняется использование аннотаций для выражения стратегии наследования. здесь