Оптимистическая блокировка не удалась; вложенное исключение - 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
есть ли необходимость смотреть в версию пути?
Как разрешить это исключение?