当前使用版本(必填,否则不予处理)
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