在Spring中的servlet过滤器内启用Hibernate过滤器

时间:2017-06-16 09:18:44

标签: java spring hibernate spring-mvc servlets

我正在开发一个多租户应用程序,这意味着我需要能够根据拥有请求用户配置文件的组织帐户过滤API响应。在我们的模型中,这被称为Tenant。我已经使用了Hibernate过滤器,它允许我控制生成的查询的范围,以便tenantId下的用户在" foo"只会看到相关模型中的行,这些行也归foo所有。

我遇到的挑战是我必须在控制器方法的范围内启用此过滤器 - 因此我将代码放在相关模型服务中的接触点。这似乎是Servlet过滤器的候选者,但似乎不起作用。

为了实现,我向enableFilter服务添加了一个公共@Transactional方法,该服务使用其内部存储库引用来启用针对我的Hibernate会话的过滤器。然后我@Autowired进入我的servlet过滤器,这样我就可以拾取与当前请求用户关联的租户并相应地启用Hibernate过滤器。

问题是,这不起作用。似乎Hibernate会话要么不活动,要么在实际服务执行任何工作之前重置。启用了servlet过滤器的ressulting查询不包括我的租户过滤。在我的服务中启用这些过滤器,我知道过滤器本身是正确的。是否有我遗漏的东西,或者我是否需要在我的请求处理的食物链中进一步启用这些过滤器?

0 个答案:

没有答案