Почему EclipseLink добавляет столбец дискриминатора для стратегии объединенного наследования? - PullRequest
7 голосов
/ 14 января 2010

Я использую стратегию наследования JOINED с реализацией EclipseLink JPA. Я заметил, что EclipseLink добавляет в схему базы данных столбец дискриминатора с именем по умолчанию DTYPE. Я понимаю, что дискриминатор нужен для одной стратегии наследования таблиц, но почему для стратегии JOINED?

EclipseLink нужен этот столбец, потому что после его удаления возникли ошибки. Добавлен ли этот столбец по соображениям производительности и т. Д.? Меня это не особо радует, поскольку с точки зрения схемы базы данных этот столбец - просто ненужный беспорядок.

JPA на основе Hibernate не делает ничего подобного.

1 Ответ

1 голос
/ 14 января 2010

От Наследование объединенной таблицы :

В объединенной таблице наследования каждый Класс делит данные из корневой таблицы. Кроме того, каждый подкласс определяет собственная таблица, которая добавляет его расширенный государство. В следующем примере показаны два таблицы, PROJECT и L_PROJECT, а также как два класса, проект и LargeProject:

...

Столбец дискриминатора определяет тип и, следовательно, какую объединенную таблицу использовать, поэтому вам нужен столбец дискриминатора в родительской таблице.

...