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重复了居然没事
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)