Вопрос

Я использую 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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top