确认
当前程序版本
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来解决这个问题,非常感谢。