Java / Hibernate JPA: inheritanceType.table_per_class и IDS
-
01-10-2019 - |
Вопрос
Я использую Hibernate JPA.
Предположим, у меня есть эти классы:
AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer
Есть ли способ сделать конкретные классы иметь независимые идентификаторы?
Я использую inheritancetype.table_per_class.
Решение
От справочного руководства Hibernate Annotations:
2.2.4.1. Таблица на класс
Эта стратегия имеет много недостатков (ESP. С полиморфными запросами и ассоциациями) пояснили в спецификации JPA, справочная документация с гибернацией, гибернацией в действии и многие другие места. Hibernate работает вокруг большинства из них, реализующих эту стратегию, используя
SQL UNION
Запросы. Обычно используется для верхнего уровня иерархии наследования:@Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Flight implements Serializable { ... }
Эта стратегия поддерживает однозначные ассоциации при условии, что они являются двунаправленными. Эта стратегия не поддерживает
IDENTITY
Стратегия генератора: идентификатор должен быть разделен на несколько таблиц. Следовательно, при использовании этой стратегии вы не должны использоватьAUTO
ниIDENTITY
.
Так что я боюсь то, что вы хотите, не поддерживается (и я предлагаю использовать GenerationType.TABLE
).