一、该问题的重现步骤是什么?
我购买的是商业版授权,使用的是2.7.2的版本,但我在新增实体,写入数据库时,使用postman提交请求,用户为admin,签权也通过,但tenant_id租户字段的值总是为空。我查看生成的Insert语句,根本就没有tenant_id这个字段,而且所有的查询语句都没有根据tenant_id
来过滤数据。
但我测试框架自带的Notice这个功能的save方法时,又可以正常写入tenant_id的值。
我的实体类没有从开发文档中说明的TenantEntity超类继承,我自己写了个超类,这个超类里定义有tenantId属性,
同时我的服务实现类也没有从BaseServiceImpl继承,而是仿BaseServiceImpl自己写了个超类(从ServiceImpl继承),该超类中仿BaseServiceImpl中的resolveEntity方法
我没有在add()方法代码中显示设置tenantId属性,我想问的是,tenantId的值是框架本身自动写入,还是需要手工设置
这个问题困扰好长时间了,麻烦分析一下原因
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
多租户的tenantId是自动注入的,不需要手动处理,具体处理逻辑流程如下:
1、BladeTenantHandler类会在工程启动初始化后执行一段逻辑,从mybatis-plus缓存的类中循环,满足如下条件则会加入租户插件启动的逻辑(不在配置排除的表并且entity包含tenantId字段)。具体可以打断点,看下最终的tenantTableList字段是否有你配置的表
2、每次调用的时候都会进行判断,当前请求是否需要启动租户插件逻辑
3、最后一步进行判断是否需要自动加上tenantId
最后你可以在这三个核心的方法打断点,在save操作的时候看看是哪一步没有自动把tenantId加上。如果你打完断点还是查不出原因所在,请把你的代码尽可能精简一下打成一个独立的工程demo,发送邮件至 bladejava@qq.com 并且贴上帖子地址,我们会下载调试并追加回复。
扫一扫访问 Blade技术社区 移动端