当前使用版本(必填,否则不予处理)

3.3.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

就是执行更新的操作

重现步骤(如果有就写完整)

从数据库中获取entity,然后给entity更新值,执行更新操作,就报错了。

报错信息

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'MP_OPTLOCK_VERSION_ORIGINAL' not found. Available parameters are [param1, et]

Comment From: miemieYaho

OptLockerTest.testUpdateByIdSuccFromDb 无法复现

Comment From: marquisXuan

MyBatis-Plus mybatis-plus执行更新操作的时候报乐观锁的错误

MyBatis-Plus mybatis-plus执行更新操作的时候报乐观锁的错误

复现-。-

Comment From: miemieYaho

你确定你的乐观锁插件生效了?

Comment From: marquisXuan

你确定你的乐观锁插件生效了?

我正要回复呢,给娃换尿布去了。 之所以出现这样的情况,就是乐观锁配置没有生效@wenheng

Comment From: miemieYaho

org.apache.ibatis.plugin.InterceptorChain#pluginAll) debug这个方法,你看看interceptors 里有没有该插件

Comment From: dgyxiaoyu

实际是 optimisticLockerInterceptor 未生效,即使有 /* * 乐观锁插件 * @return / @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } 但是如果你使用了
MybatisPlusConfig.java中 @Bean public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean(DataSource ds, GlobalConfig gc) throws Exception {.... 如果缺少这个,也就是自定义了MybatisSqlSessionFactoryBean 需要手动加入这个插件(一般都会要分页插件和手动写MybatisSqlSessionFactoryBean,来识别指定位置的 xml 等) sessionFactoryBean.setPlugins(paginationInterceptor(),optimisticLockerInterceptor());

实测3.3.2 如果不这么配置,会报org.apache.ibatis.binding.BindingException: Parameter 'MP_OPTLOCK_VERSION_ORIGINAL' not found. Available parameters are [param1, et] 3.2.0 不报错,但不生效,update sql中没有 where version=?