老猿
2020-02-12 22:55
你这个代码我下载下来了,我这调试起来,稍微有点费劲。我给你个思路,你看看行不行,如果不行我再帮你调试一下。
就是你不要把PaginationInterceptor注入到拦截器中,你可以像我那个例子一样,在一个地方定义一个ThreadLocal静态变量保存你的tennatid字段。在你的TenantInterceptor拦截器中将区分租户的值设置到静态变量上,然后再PaginationInterceptor中的多租户解析器中把他取出来。例如:public Expression getTenantId(boolean where) {
Long tenantId = local.get();
if(tenantId != null) {
return new LongValue(tenantId );
}
return null;
}
用完了之后,记得把ThreadLocal清空,防止线程归还到线程池后,被其他线程复用。
还有一个办法你可以把tennatid在拦截器中存储到request中,然后再PaginationInterceptor取出来。
试试看看是否可行,如果不可行,再反馈给我。