@青苗 你好,想跟你请教个问题:我用mybatisplus 的乐观锁插件,我的想法是这样的,如果我update失败时,我想进行重试,而不是回滚。所以我自己定义了一个重试的aop 切面,但问题是我发现当重试查询的时候,获取到的数据还是旧的数据,但其实数据库已经改变了的,导致重试无效,哪个地方可以关掉缓存吗?
mybatis-plus: configuration: cache-enabled: false
这个设置false 还是不行,我不知道还有没有什么缓存的配置,感谢
不太清楚一级缓存是不是会受这个参数的影响。 我想到的另外一个可能因素,是数据库的事务隔离级别,如果是可重复读的话,就算version更新,在当前事务内也不会读取到最新的version值。隔离级别降为读已提交,才可以读取到已经提交的version值######可以,事务隔离级别要放在最外面的事务才行,我第一次试的时候放在小事务里了,不生效######我设置为读未提交(read-uncommitted)都没用,查询sql 都打印了,应该不是缓存的问题? 但是隔离级别我设置到最低了,查询还是旧的数据。会不会跟我手动改数据库的原因有关?######如果开启了一级缓存建议关闭使用 service 切面的缓存, 注意乐观锁 version 值是不是发生了变化导致更新失败######回复 @青苗 : 感谢感谢######回复 @1006059906 : 默认不会缓存######version 是对的,主要是查询出来的结果没变。我用的查询结果是mybatisplus 自带的方法: public T getOne(Wrapper<T> queryWrapper); 这个方法有缓存吗?######要求这么高用串型事物吧######1.看事务隔离级别 2.如果是repeatable read, 是一致性非锁定读-读快照数据(undo)并且始终是读一开始行数据版
######感谢######我也觉得是事务原因,但是我降到最低都不行。跟mybatisplus 的sqlsession 有没有关系呢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。