Проблема:
При попытке выполнить сохранение (session.update()) persistent-объекта после изменения поля, являющегося идентификатором в hibernate-маппинге, валится исключение:
org.hibernate.HibernateException: identifier of an instance of ... was altered from ... to ...
Решение:
Обновлять идентификаторы у persistent-объекта нельзя (вероятно, это связано со спецификой генерации Hibernate`ом SQL-запросов на обновление). Если сделать для объекта session.evict(), а потом - session.save(), то добавится новая запись в БД, с новым идентификатором. Это тоже не то, что мы хотели. Остается другой вариант - выполнить session.delete(), а потом - session.save(). Тогда мы получим желаемое - идентификатор "обновится" в БД (точнее, сначала запись удалится, а потом - вставится с новыми идентификатором).
Комментариев нет:
Отправить комментарий