1.Entity中配置
@Field("version") @Version private 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) ;
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) ; }

本文介绍如何在MongoDB中实现乐观锁,包括Entity配置、repository继承及serviceImpl中使用@Transactional注解进行事务管理。文中详细解释了新记录插入与现有记录更新的操作区别,并强调了在更新操作中正确设置版本号的重要性。

7873

被折叠的 条评论
为什么被折叠?



