Я имею дело с CRUD на класс hierarhy: Employee->{Manager, Waiter, Chef}
с использованием Spring MVC. Я использую одну стратегию наследования таблицы с полем DTYPE в качестве дискриминатора. Где я застрял, ситуация, когда мне нужно обновить Waiter -> Manager (это не тот случай, когда официант был продвинут, а просто исправил ошибку ввода пользователя !!!) или любую другую комбинацию сущностей.Hibernate: обновить запись с измененным типом
Hibernate в себя отказывается изменить тип записанного в поле DTYPE, даже если я явно сделать:
managerDAO.update(manager);
где manager
является объектом Manager
класса с уже существующим Id (belongning к типу официанта (DTYPE = «Официант»)) в БД.
Теперь возникает вопрос: Как исправить ошибку ввода моего пользователя, которая, по-видимому, довольно проста и распространена? Мне просто нужно, чтобы бывшая запись официанта стала записью менеджера с тем же идентификатором.
Интересно, есть ли у Hibernate какие-то трюки, чтобы справиться с ситуацией вроде этого? Потому что я не хочу изобретать колесо или найти обходное решение, которое должно предвидеть команда Hibernate.
Я уже рассмотрел
- обновления SQL на поле DTYPE и
- удалить и повторно вставить новую запись правильного типа ... но все это выглядит как неправильное использование спящего режима.
Любая помощь будет оценена!