Java / Hibernate JPA: InheritanceType.TABLE_PER_CLASS и идентификаторы - PullRequest
3 голосов
/ 01 июля 2010

Я использую Hibernate JPA.

Предположим, у меня есть эти классы:

AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer

Есть ли способ, чтобы конкретные классы имели независимые идентификаторы?

Я использую InheritanceType.TABLE_PER_CLASS.

1 Ответ

8 голосов
/ 01 июля 2010

Из Справочного руководства по 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.

Поэтому я боюсь, что вы хотите, не поддерживается (и я предлагаю использовать GenerationType.TABLE).

...