Я использую Hibernate JPA.
Предположим, у меня есть эти классы:
AbstractPerson |--> ConcreteEmployee |--> ConcreteCustomer
Есть ли способ, чтобы конкретные классы имели независимые идентификаторы?
Я использую InheritanceType.TABLE_PER_CLASS.
Из Справочного руководства по Hibernate:
2.2.4.1. Таблица на класс У этой стратегии много недостатков (особенно с полиморфными запросами и ассоциации) объяснил в JPA спецификация, ссылка на Hibernate документация, Hibernate в действии, и много других мест. Спящая работа вокруг большинства из них реализуют это стратегия с использованием SQL UNION запросов. Это обычно используется для верхнего уровня иерархия наследования: @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Flight implements Serializable { ... } Эта стратегия поддерживает один ко многим ассоциации при условии, что они двунаправленный. Эта стратегия делает не поддерживает генератор IDENTITY стратегия: идентификатор должен быть разделен через несколько столов. Как следствие, при использовании этой стратегии, вы должны не использовать AUTO, ни IDENTITY.
У этой стратегии много недостатков (особенно с полиморфными запросами и ассоциации) объяснил в JPA спецификация, ссылка на Hibernate документация, Hibernate в действии, и много других мест. Спящая работа вокруг большинства из них реализуют это стратегия с использованием SQL UNION запросов. Это обычно используется для верхнего уровня иерархия наследования:
SQL UNION
@Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Flight implements Serializable { ... }
Эта стратегия поддерживает один ко многим ассоциации при условии, что они двунаправленный. Эта стратегия делает не поддерживает генератор IDENTITY стратегия: идентификатор должен быть разделен через несколько столов. Как следствие, при использовании этой стратегии, вы должны не использовать AUTO, ни IDENTITY.
IDENTITY
AUTO
Поэтому я боюсь, что вы хотите, не поддерживается (и я предлагаю использовать GenerationType.TABLE).
GenerationType.TABLE