insertBatchSomeColumn出现异常

来源:8-2 选装件InsertBatchSomeColumn

慕设计2956158

2019-11-01 15:02

前面多租户的代码我没有删,List

asList = Arrays.asList(user,user2); int insertBatchSomeColumn = userMapper.insertBatchSomeColumn(asList); 两个manag_id也没有给值,为什么出现column 'manager_id' specified twice的错误
写回答 关注

4回答

  • 老猿
    2019-11-04 09:54:14

           我明白是怎么回事了,官方就是这么设计的。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;
        }
    }


  • 老猿
    2019-11-04 09:44:19

    你好,经过我验证,跟你的报错信息是一样的,应该是个bug,我现在反馈给官方。

    weixin...

    我也遇到了

    2021-01-05 22:12:27

    共 1 条回复 >

  • 慕码人1926440
    2020-12-02 00:02:39
    insertBatchSomeColumn

    一直出现null Exception错误。

  • 慕斯8436499
    2019-12-25 10:58:32

    666

MyBatis-Plus进阶

MyBatis-Plus框架进阶课程

23296 学习 · 118 问题

查看课程

相似问题