mybatis plus 达梦数据库 重复的列名
环境mybatis plus 3.5.9达梦数据库 8.0问题从mysql迁移到达梦数据库后,执行update时,提示Caused by: java.sql.SQLException: 第XX行附近出现错误:重复的列名[XXXX]打印出SQL如下:UPDATE g_health_check_runtimeSEThealth_check_id =?,last_check_time =?,last_c
环境
mybatis plus 3.5.9
达梦数据库 8.0
问题
从mysql迁移到达梦数据库后,执行update时,提示
Caused by: java.sql.SQLException: 第XX行附近出现错误:
重复的列名[XXXX]
打印出SQL如下:
UPDATE g_health_check_runtime
SET
health_check_id =?,
last_check_time =?,
last_check_result =?,
last_check_result_code =?,
last_check_result_content =?,
next_check_time =?,
binding_num =?,
creator_type =?,
update_id =?,
create_time =?,
update_time =?,
health_check_id =?,
last_check_time =?,
last_check_result =?,
last_check_result_code =?,
last_check_result_content =?,
next_check_time =?,
binding_num =?,
creator_type =?
WHERE
is_del = 0 AND ( id = ?)
根据sql语句,发现update的SQL中,set中有重复的字段。
这个语句是mybati plus生成的,可问题是mybatis plus会生成两次呢?
解决方案
通过断点排查,发现是因为 我直接调用了BaseMapper中的 update接口
update接口 传两个参数,一个为实体对象,一个为UpdateWrapper
我这边set了实体对象的值,并且也在updateWrapper中同样设置了值,导致两者在一起重复了。
根据 下方的参考 默认传一个实体对象或者UpdateWrapper,另一个为null即可。
我这边是因为要强制更新 字段的值为null,所以用了UpdateWrapper
最终修改为了
update(null, updateWrapper)
参考
通过文档:https://baomidou.com/pages/49cc81/#update-3
根据文档的值,同时设置的实体对象和UpdateWrapper,会重复设置同一个字段。
吐槽
mysql重复了居然没事
更多推荐
所有评论(0)