当前位置: 代码迷 >> 综合 >> Mongo DB乐观锁之version在spring data中应用
  详细解决方案

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

热度:78   发布时间:2024-01-16 06:49:21.0

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) ;


如果是更新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) ;
}



  相关解决方案