2016-07-18 3 views
0

Я новичок в Hibernate, я видел, что Hibernate бросает StaleObjectStateException, а несколько пользователей пытаются сохранить полный объект. Но большинство обновлений БД я сделал с использованием запроса на обновление HQL. Теперь я добавил дополнительное условие для запросов обновления HQL как «где version =: currentVersion», чтобы определить, что другой пользователь не обновил конкретную запись. Кажется, он работает нормально. Но проблема в том, что у меня много запросов, и мне также нужно синхронизировать номер версии в моем объекте java, как и в DB. Есть ли простой способ получить «StaleObjectStateException» в обновлении запроса HQL во время многопользовательских обновлений?StaleObjectStateException ожидается при обновлении с использованием HQL

ответ

0

Вы поняли это неправильно. Hibernate выбрасывает StaleObjectStateException как желаемое поведение для «, когда несколько пользователей пытаются сохранить полный объект». Это предотвращает, что последний автор выигрывает и переопределяет данные от своих предшественников. Обычно вы улавливаете это исключение и показываете пользователю сообщение об ошибке «Кто-то изменил данные. Повторите попытку!». Предложение HQL-запроса неверно и заставит вас исправлять код еще больше и больше.

+0

Я понимаю это поведение. Но эта профилактика происходит только при слиянии или сохранении полной сущности. Но при выполнении запроса на обновление HQL. Эта профилактика не происходит –

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