Гибернация - Должен ли я использовать дискриминатор?

Я использую таблицу для каждого подкласса для сопоставления некоторых данных с использованием спящего режима. Обычно на уровне базы данных я бы ввел столбец типа в абстрактную таблицу и ее подтаблицы, что обеспечило бы, чтобы абстрактная запись могла относиться только к подзаписи соответствующего типа. Однако при просмотре различных ресурсов кажется, что дискриминатор гибернации используется для устаревших баз данных. Означает ли это, что я использую неправильный подход?


person mogronalol    schedule 22.08.2011    source источник


Ответы (2)


Table Per (Sub)Class означает, что у вас есть одна таблица на класс и нет абстрактной таблицы. Так что дискриминатор не нужен. Если у вас есть одиночная таблица или объединенное наследование, вам понадобится дискриминатор.

Редактировать: на самом деле, Hibernate Table Per Subclass, по-видимому, является стратегией объединенного наследования. Тем не менее, это указано в документации:

Реализация Hibernate таблицы для каждого подкласса не требует столбца дискриминатора.

person Thomas    schedule 22.08.2011

Как указано выше, таблица Hibernate для каждого подкласса не требует дискриминатора.

Согласно тому же источнику: «... Если вы хотите использовать столбец дискриминатора со стратегией таблицы для каждого подкласса, вы можете комбинировать использование подкласса и объединение ...»

См. раздел 9.1.3 в http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html#inheritance-tablepersubclass

person Ashkan Aryan    schedule 22.08.2011