博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongo DB乐观锁之version在spring data中应用
阅读量:4043 次
发布时间:2019-05-24

本文共 817 字,大约阅读时间需要 2 分钟。

1.Entity中配置

@Field("version")@Versionprivate Long version ;
@Version 的包引用为
org.springframework.data.annotation.Version

类型需要为对象类Long,不能为long

2.repository中需要extends MongoRepository

MongoRepository

3.serviceImpl中配置

方法上加上@Transactional标签

@Transactional

如果是新entity,则使用insert

this.userBuyCourseRepository.insert(userBuyCourseEntity) ;

如果是更新entity,则使用save,同时需要先查询出entity,再save(entity),如果是save (newEntity) ,则需要将查询出的entity的version对newEntity赋值,才能执行,否则会报违反唯一约束

UserBuyCourseEntity checkEntity =this.userBuyCourseRepository.findOne(        userBuyCourseEntity.getAccountJoinTimeJoinCourse()) ;
userBuyCourseEntity.setVersion(checkEntity.getVersion());//必须设置version,因为转化过来的userBuyCourseEntity无verison值,mongo认为version为null,则为insert操作,
这样违背了update愿意if(checkEntity!=null){    this.userBuyCourseRepository.save(userBuyCourseEntity) ;}

转载地址:http://ueadi.baihongyu.com/

你可能感兴趣的文章
VS 2005 CRT函数的安全性增强版本
查看>>
SQL 多表联合查询
查看>>
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
关于AIS编码解码的两个小问题
查看>>
GitHub 万星推荐:黑客成长技术清单
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.147 - LeetCode1108
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>