У меня есть постоянный спящий режим, управляемый @entity Obj в Hibernate, который имеет, например, поля id, fieldA и fieldB.Есть ли способ избежать HibernateOptimisticLockingFailureException?
В некотором классе у меня есть два метода @Transactional, updateA() и updateB().
updateA() получает Obj по его идентификатору, выполняет некоторую обработку и обновляет свое поле A.
обновлениеB такой же для fieldB.
У меня также есть два клиента, которые постоянно делают запросы. Один клиент всегда делает запросы, вызывающие updateA(), а другой клиент всегда вызывает updateB().
Они оба передают один и тот же идентификатор существующего объекта Obj.
Есть ли способ избежать HibernateOptimisticLockingFailureException, который продолжает встречаться или обрабатывать его один раз успешно, учитывая тот факт, что каждый метод обновляет разные поля? Какой-то слияние?
Для завершения изображения поток, который вызывает updateA(), фактически вызывает другие транзакционные методы, похожие на updateA(), но ни один из них не обновляет поле B.
Сначала я просто попытался поймать исключение и повторить попытку во второй раз. Но иногда это терпит неудачу во второй раз тоже ... Это не похоже на хорошее решение.
Вы используете управление версиями ('@ Version') на вашем организация? –
Не использовать @Version. Будет ли читать об этом – inor