确认

  • [X] 我使用的版本是最新版, 并且使用插件确认过项目里无依赖版本冲突
  • [X] 我已经在 issue 中搜索过, 确认问题没有被提出过
  • [X] 我已经修改标题, 将标题中的 描述 替换为遇到的问题

当前程序版本

3.5.8

问题描述

3.5.8的版本的BaseMapper的逻辑删除deleteBatchIds会触发自动填充字段的updateFill方法,3.5.5版本的不会触发updateFill

详细堆栈日志

No response

Comment From: miemieYaho

有什么问题?

Comment From: wanglyi

Long version = (Long) metaObject.getValue("version"); if(version == null) { throw new BaseException("版本号缺失"); } 我在执行更新语句的时候,会有一层校验,获取数据原有的乐观锁版本,如果没传,就抛出错误。 但是,现在执行逻辑删除,获取不到这个乐观锁了,拿到的是个null导致报错,所以想问一下,对于这一块的变更,有没有什么替代方案可以解决

Comment From: wanglyi

以前的3.5.5的版本,在执行逻辑删除的时候,是不会执行updateFIll方法的,现在3.5.8发生了变更。 问题:是特意修改成需要触发updateFill方法的吗?如果是特意修改,那有办法配置成更新的时候,不去触发updateFill,或者其他方法。

Comment From: wanglyi

说白了,目前版本的软删除和乐观锁的逻辑是冲突的。

Comment From: miemieYaho

原来的deleteBatchIds你能获取到version?

Comment From: wanglyi

原来的deleteBatchIds不会触发updateFill这个方法,所以也不会去获取version。

Comment From: miemieYaho

你的ide没告诉你deleteBatchIds以过时吗?你点开看使用另一个方法

Comment From: wanglyi

非常抱歉,deleteBatchIds确实在3.5.8版本已经废弃了。 验证了一下,新版本的deleteByIds,可以传入useFill来解决这个问题,非常感谢。