新项目选择 华夏 ERP 做二次开发

华夏 ERP 项目基本信息介绍

开源版有完整的进销存模块,没有生产,而项目也不需要,正好符合要求。

主要工作是针对商品以及仓库管理功能做一些字段调整。

在修改了仓库新增 Model 字段后,多次调整修复报错之后,出现这个 Column 'tenant_id' specified twice 报错。

百度了一下,说是多租户插件会出现这个报错,主要是自定义插入 tenant_id 与 Mybatis 扩展里处理插入时自动插入 tenant_id 重复插入字段赋值有关。插入操作的列里会存在两个 tenant_id 字段,这就导致了报错发生。

根据网上的提示分别找到这两个部分:

自定义的 新增客户时给当前用户自动授权 - setUserCustomerPermission()

    // 与 mybatis 多租户字段冲突 "Column 'tenant_id' specified twice"
    String token = request.getHeader("X-Access-Token");
    Long tenantId = Tools.getTenantIdByToken(token);
    if(tenantId!=0L) {
        userBusiness.setTenantId(tenantId);
    }

mybatis 扩展包 com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser.class

public void processInsert(Insert insert) {
...
insert.getColumns().add(new Column(this.tenantHandler.getTenantIdColumn()));
...

网上的教程大致有三种方法:

虽然其他方法都有现成的教程写法,但我还是选择了最简单的方法,去掉自定义的 set 值部分。

注释掉自定义 set 值部分,重启应用,插入成功!