MyBatisPlus报错:Column 'xxx' specified twice

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

示例:

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

报错提示如下:

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

报错原因:
看其中的SQL:

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导致。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值