Наследование объектов Hibernate без отображения таблиц - PullRequest
2 голосов
/ 27 января 2012

Я хочу использовать спящие объекты в проекте, как определено ниже.

@Table(name = "Parent")
class Parent{

     int id;
     String name;

}

@Table(name = "Child")
class Child extends Parent{
     String schoolNo;
}

Но в базе данных; Нет никакой связи с этими двумя таблицами.

столбцы родительских таблиц; идентификатор, имя

столбцы дочерних таблиц; ID, имя и школаNo

Если я использую

@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

когда я отправляю запрос для родительского объекта, hibernate использует UNION для дочерних и родительских таблиц, но я хочу выбирать только из родительской таблицы.

А если я использую

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)

hibernate хочет столбец дискриминатора.

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

С уважением.

Ответы [ 2 ]

2 голосов
/ 28 января 2012

TABLE_PER_CLASS - правильная стратегия здесь.

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

0 голосов
/ 27 января 2012

В аналогичной ситуации я использую @Inheritance(strategy = InheritanceType.JOINED) в родительской таблице.

См. Дополнительную информацию в документах Hibernate: http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e1168

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...