optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was upda
最新推荐文章于 2024-02-05 16:38:18 发布
最新推荐文章于 2024-02-05 16:38:18 发布
阅读量
3.9k
表示在使用乐观锁定机制时,发生了锁定失败的情况。如果事务隔离级别过低,可能导致多个事务能够同时读取相同的数据,并在提交时引发乐观锁定异常。如果应用程序在读取数据后,对数据进行了修改但未及时更新版本信息,可能导致版本信息不同步,从而引发乐观锁定异常。多个事务同时尝试更新相同的数据记录,但其中一个事务已经提交了更新,导致另一个事务的更新失败。如果应用程序使用了缓存,而缓存中的数据与数据库中的数据不同步,可能导致乐观锁定失败。在发生乐观锁定异常时,如果事务回滚并且没有合适的重试机制,可能导致一连串的失败操作。
乐观锁:给数据加一个版本, 每一操作数据就更新版本,不会上锁,但是在更新的时候你会判断这期间有没有人去更新这个数据
悲观锁:给数据加了一把锁 ,同事务只能一个线程进行操作,使用完了锁释放, 没释放前后面想要操作的人就得排队 ,效率低,但是很安全
2 问题描述
2. 请求中指定了id, 和version 但是数据库中有这条记录,但是version不正确(和数据库不一致)4. 请求中不指定了id, 和version ,数据库中会新增一条记录,并且version是0。4. service中直接保存:直接调用Spring的 saveAndFlush方法保存数据。2. 请求中指定了id, 和version 但是数据库中有这条记录,结果会更新。1. 保存数据 Id 在数据库中是自增长的。
最近发现在日志中偶尔报
org
.springframework.orm.Object
Optimistic
Locking
Failure
Exception
: Object of cla...
新开发的系统,往往可能需要将旧版的系统中的历史数据,用脚本的方式在新系统中跑一遍业务流程,其实可能是用Java代码自动调用一些业务流程接口。
在执行过程中发现报错:
2021-01-27 19:32:46.300 [http-nio-5090-exec-4] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet]:182 - Servlet.service() for servlet [dispatcherServlet] in context with path
在同一个请求里面,有对同一张表进行多次保存或更新,但是事务并没有提交(这里看用的什么框架),然后读取到数据库id为空的数据。解决:在每次进行保存或者更新的时候,flush一下数据,进行强制提交,以保证后续的查询。二、看是否debug断点数量问题,取消所有debug小红圈,然后重新构造。一、看是否是缓存的问题,利用生命周期 clean一下,重新构建。一、缓存问题,读取的是缓存里的数据,而不是数据库的最新的值。二、脏读问题,读到一条还没有在数据库里面更新数据。这里显示的更新数据,乐观锁失败了。
project->clean...清除类修改后的导入信息报错
[ERROR] 2017-03-22 10:09:45.060method:
org
.quartz.core.JobRunShell.run(JobRunShell.java:208)
nested
exception
is
org
.
hibernate
.
StaleObjectStateException
:
Row
was
upda
近期在做一个双数据源同步的需求,项目主要采用springboot,通过JPA操作数据库,由于好久没玩
hibernate
了,凭借模糊的记忆加上Google大法,总算是有了一个大体上的熟系,现将开发过程中遇到的问题总结记录一下,弥补自己脑内存不足的问题,也希望对大家有所帮助。
1. 如果有条件尽量不要使用字符串
在拼接查询语句时,经常需要使用到表的列明,如代码中的missionId,建议常量化,方便代码调整改动,
Specification<MissionRuleRelation> specific