当前使用版本(必填,否则不予处理)

3.5.3

该问题是如何引起的?(确定最新版也有问题再提!!!)

使用多租户插件,并且该entity对应的表需要租户隔离;entity里的tenantId字段没有加fill = FieldFill.INSERT,但是却填充了值

重现步骤(如果有就写完整)

使用多租户插件

@Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

        interceptor.addInnerInterceptor(new MyTenantLineInnerInterceptor(new TenantLineHandler() {
            @Override
            public Expression getTenantId() {
                String tenantId = RequestUtil.getCurrentLoginTenantId();
                return new StringValue(tenantId);
            }

            // 这是 default 方法,默认返回 false 表示表需要拼多租户条件
            @Override
            public boolean ignoreTable(String tableName) {
                return !StrUtil.equals("datasource_info", tableName);
            }
        }));

        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
        return interceptor;
    }

entity里的tenantId字段没有加fill = FieldFill.INSERT

@TableField(value = "tenant_id")
 private String tenantId;

全局填充中加了tenantId的填充

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        String tenantId =null;
        try {
            tenantId=RequestUtil.getCurrentLoginTenantId();
        }catch (Exception e){
            e.printStackTrace();
        }
        if (!StringUtils.isBlank(tenantId)){
            this.setFieldValByName("tenantId",RequestUtil.getCurrentLoginTenantId(),metaObject);
        }
    }

保存entity时会给tenantId填充值

报错信息

保存entity时会给tenantId填充值

Comment From: miemieYaho

使用MyMetaObjectHandler#strictInsertFill而不是setFieldValByName