2016-11-21 4 views
0

Я имею дело с CRUD на класс hierarhy: Employee->{Manager, Waiter, Chef} с использованием Spring MVC. Я использую одну стратегию наследования таблицы с полем DTYPE в качестве дискриминатора. Где я застрял, ситуация, когда мне нужно обновить Waiter -> Manager (это не тот случай, когда официант был продвинут, а просто исправил ошибку ввода пользователя !!!) или любую другую комбинацию сущностей.Hibernate: обновить запись с измененным типом

Hibernate в себя отказывается изменить тип записанного в поле DTYPE, даже если я явно сделать:

managerDAO.update(manager); 

где manager является объектом Manager класса с уже существующим Id (belongning к типу официанта (DTYPE = «Официант»)) в БД.

Теперь возникает вопрос: Как исправить ошибку ввода моего пользователя, которая, по-видимому, довольно проста и распространена? Мне просто нужно, чтобы бывшая запись официанта стала записью менеджера с тем же идентификатором.

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

Я уже рассмотрел

  1. обновления SQL на поле DTYPE и
  2. удалить и повторно вставить новую запись правильного типа ... но все это выглядит как неправильное использование спящего режима.

Любая помощь будет оценена!

ответ

0

Попытайтесь запросить объект «официант», приведённый к объекту «человек» (предполагая, что человек является родителем в дереве наследования), затем бросить его ясли, установить соответствующие поля и сохранить объект ясли.

Смежные вопросы