insertBatchSomeColumn出现异常
前面多租户的代码我没有删,List
asList = Arrays.asList(user,user2); int insertBatchSomeColumn = userMapper.insertBatchSomeColumn(asList); 两个manag_id也没有给值,为什么出现column 'manager_id' specified twice的错误前面多租户的代码我没有删,List
asList = Arrays.asList(user,user2); int insertBatchSomeColumn = userMapper.insertBatchSomeColumn(asList); 两个manag_id也没有给值,为什么出现column 'manager_id' specified twice的错误2019-11-01
我明白是怎么回事了,官方就是这么设计的。insertBatchSome这个功能,如果你不排除某个字段的话,所有字段都会在Insert中。如果该字段为null也会给你添加到insert语句中。你的操作中,配置的多租户sql解析器区分租户的字段为manager_id在insert中会出现,还有一个是insertBatchSome给你加到insert中的manager_id它为null。所以在insert中出现两次,报这个错误。我有个解决办法。在自定义的sql注入器中这样写,把manager_id排除掉:
public class MySqlInjector extends DefaultSqlInjector { @Override public List<AbstractMethod> getMethodList(Class<?> mapperClass) { List<AbstractMethod> methodList = super.getMethodList(mapperClass); methodList.add(new InsertBatchSomeColumn(t ->!t.getColumn().equals("manager_id"))); //...其他选装件或自定义方法 return methodList; } }
举报