首页 > 解决方案 > 是否有向实体添加动态 where 子句以动态过滤该实体的任何查询结果?

问题描述

我正在开发一个使用 Spring Boot 框架的企业系统,并且该系统是无状态的(没有保存会话)。

我有User实体,这个实体有一个分支列表,另一个实体叫做Room,现在我需要让所有房间都属于一个分支。

因此,我需要一种通用方法来在房间上添加过滤器,以获取仅与当前用户分支匹配的房间(请求API获取一些房间并在请求标头中添加他的授权的当前用户)。

我需要使其通用以处理房间的任何请求以自动添加此过滤器,这样我就可以迭代所有旧的APIs并将此过滤器添加到其上,或者在任何查询之前使其成为一个方面以向其添加动态条件.

我在实体上尝试@Where(clause = "condition")了注释,Room但它只需要一个静态条件。

另外,我尝试使用@Filter(name = "filterName", condition = "branch = :branchParam")注释,但它需要在查询执行时设置参数,因此在我的情况下它不起作用,因为我没有一点可以将此参数设置为当前用户分支。

标签: javaspringhibernatespring-bootaop

解决方案


我想你正在寻找的是

  1. 查询Dsl
  2. 乔克

我个人的偏好是 QueryDsl。


推荐阅读