MyBatisPlus报错:Column 'xxx' specified twice

朴灿烈づ我的快乐病毒、 2023-03-12 09:03 161阅读 0赞

报错详情:
java.sql.SQLSyntaxErrorException: Column 'xxx' specified twice

示例:

  1. ...
  2. BeanUtils.copyProperties(bo, po);
  3. // 此处故意画蛇添足一个租户id
  4. po.setTenatId = 1000;
  5. if (dutyMapper.insert(po) == 0) {
  6. throw new InvalidSqlOperationException();
  7. }
  8. ...

报错提示如下:

  1. ...
  2. ### The error occurred while setting parameters
  3. ### SQL: INSERT INTO sc_duty (duty_name, duty_desc, tenant_id, create_by, create_time, update_by, update_time, tenant_id) VALUES (?, ?, ?, ?, ?, ?, ?, 1000)
  4. ### Cause: java.sql.SQLSyntaxErrorException: Column 'tenant_id' specified twice;
  5. ...

报错原因:
看其中的SQL:

  1. INSERT INTO sc_duty (duty_name, duty_desc, tenant_id, create_by, create_time, update_by, update_time, tenant_id) VALUES (?, ?, ?, ?, ?, ?, ?, 1000)

其中tenant_id出现了两次,第一次为上文画蛇添足的结果,第二次,也就是自动设置为1000的,为MyBatisPlus开启多租户SQL解析器后自动从会话中取得。

解决方法:
将本来由MyBatisPlus自动进行进行装配的字段设为null值,或找出导致该字段被赋值的地方进行修改。
上文多余的tenant_id是自己set的,而实际开发中更多的可能是由某个业务类之间的字段copy导致。

发表评论

表情:
评论列表 (有 0 条评论,161人围观)

还没有评论,来说两句吧...

相关阅读