Mongo DB乐观锁之version在spring data中应用

来源:互联网 发布:电子教室软件是什么 编辑:程序博客网 时间:2024/06/14 12:45

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,因为转化过来的userBuyCourseEntityverison值,mongo认为versionnull,则为insert操作,
这样违背了update愿意if(checkEntity!=null){    this.userBuyCourseRepository.save(userBuyCourseEntity) ;}



原创粉丝点击