Оптимистическая блокировка не удалась; вложенное исключение - org.hibernate.StaleObjectStateException: строка была обновлена ​​или удалена другой транзакцией

Я использую приведенный ниже код для обновления данных через приложение веб-сервиса J2ee (бизнес-логика выполняется с помощью Spring и Hibernate).

. GetSessionFactory() getCurrentSession() обновление (объект).

Но когда я обновляю любую сущность (obj)(никакая другая транзакция не пытается обновить сущность, и существует несколько потоков), я получаю исключение ниже: (Когда я пытаюсь обновить любую запись таблицы, соответствующую объявленной сущности, которую я получаю этот)

оптимистическая блокировка не удалась; вложенное исключение - org.hibernate.StaleObjectStateException: строка была обновлена ​​или удалена другой транзакцией (или сопоставление несохраненного значения было неправильным)

Поток приложения - это класс ServiceImpl веб-службы (вызов метода обновления в менеджере) ---> класс менеджера (в котором я вызываю метод обновления (метод обновления DAO) с аннотацией @Transactional) -> вызов метода session.update в методе DAO Impl

Эта ошибка возникает каждый раз, когда я пытаюсь обновить любой объект сущности.

Я указываю сущность, которую я хочу обновить, с помощью приведенной ниже аннотации @ org.hibernate.annotations.Entity (dynamicInsert = true, dynamicUpdate = true)

Я получаю это исключение, когда пытаюсь обновить любой объект сущности в базе данных. Я не создавал, а затем обновлял объект. Я пытаюсь обновить существующую сущность.

Еще одна вещь, которую я заметил в файле журнала относительно версии:

Существующая версия: 2017-11-22 00:00:00.0 -> Новая версия: 2017-11-30 08:17:57.188

есть ли необходимость смотреть в версию пути?

Как разрешить это исключение?

0 ответов

Другие вопросы по тегам