遇到问题--java---spring mongo 乐观锁--OptimisticLockingFailureException: Optimistic lock exception on savin

在使用Spring Data MongoDB时遇到了OptimisticLockingFailureException,原因是启用version字段的乐观锁机制导致并发更新冲突。解决方法包括手动处理version后再save,改用update操作,或者使用insert,但需要注意insert可能会因_id重复引发错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况

代码如下:

  MyLog myLog = mongoTemplate.find(new Query(Criteria.where("code").is("1234")))
        myLog.setRequestDate(new Date());
        mongoTemplate.save(myLog);

详细报错如下:

exception ERROR org.springframework.dao.OptimisticLockingFailureException: Optimistic lock exception on saving entity

原因

save具有update的效果,但是如果实体启用了versionEntity功能, 更新数据时要求version大于库中的version。

但是直接提取出来的数据 有可能 别人也在并发修改,导致 我们 存库时的version小于 库中的version。

详情可参考 Mongo DB乐观锁之version在spring data中应用

解决方案

手动处理version号再使用s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿泽财商会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值