Ошибка при второй операции сохранения — Оптимистичное исключение блокировки при сохранении объекта

#mongodb #spring-boot #spring-mongodb

#Ява #mongodb #пружинный ботинок #весна-mongodb #кислота

Вопрос:

Мои транзакции выглядят так —

  1. findById(идентификатор) — версия 1
  2. выполните некоторые операции с объектом — версия 1
  3. сохраните(данные) и верните последний объект — версия 2
  4. снова выполните некоторые действия с объектом — версия 2
  5. снова сохраните объект(данные) в базе данных (версия должна быть 3 после обновления)

В некоторых случаях я получаю оптимистичное исключение блокировки в точке 5, даже если версия базы данных и версия объекта обновления верны.

монго, ява

org.springframework.dao.OptimisticLockingFailureException:  в org.springframework.data.mongodb.core.Монгольская табличка.doSaveVersioned (MongoTemplate.java:1458) в org.springframework.data.mongodb.core.MongoTemplate.сохранить (MongoTemplate.java:1420) в org.springframework.data.mongodb.репозиторий.поддержка.SimpleMongoRepository.сохранить (SimpleMongoRepository.java:87) в sun.reflect.Generatedmethod accessor237.вызываем на солнце.отражаем.Делегирование methodaccessorimpl.invoke (делегирование methodaccessorimpl.java:43) в java.lang.reflect.Метод.вызов (Метод.java:498)  в org.springframework.data.репозиторий.ядро.поддержка.Композиция репозитория$Фрагменты репозитория.вызов (композиция репозитория.java:371)  в org.springframework.data.репозиторий.ядро.поддержка.Композиция репозитория.вызов (композиция репозитория.java:204)  в org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.вызов (RepositoryFactorySupport.java:657)  в org.springframework.aop.фреймворк.Рефлексивный метод вызова.продолжайте (ReflectiveMethodInvocation.java:186)  в org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke (RepositoryFactorySupport.java:621)  в org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.вызов (RepositoryFactorySupport.java:605)  в org.springframework.aop.фреймворк.Рефлексивный метод вызова.продолжайте (ReflectiveMethodInvocation.java:186)  в org.springframework.данные.проекция.Defaultmethod invokingmethod interceptor.invoke (defaultmethod invokingmethod interceptor.java:80)  в org.springframework.aop.фреймворк.Рефлексивный метод вызова.продолжайте (ReflectiveMethodInvocation.java:186)  в org.springframework.aop.перехватчик.ExposeInvocationInterceptor.вызов (ExposeInvocationInterceptor.java:95) в org.springframework.aop.framework.Рефлексивный метод вызова.продолжайте (ReflectiveMethodInvocation.java:186)  в org.springframework.aop.фреймворк.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:212)  на com.sun.proxy.$Proxy239.сохранить