写Spring Specification来过滤不相关的表



我正在开发一个使用JHipster生成的Spring和Java项目。我想要过滤与另一个表没有直接关系的表。

我的目的几乎在之前类似的问题中被问到
编写具有多个内连接的Spring规范&其他条件

但是在我的例子中,我有两个不相关的实体:
(id: Long, FullName: string, profileRank: Enum of string)
(id: Long, level: Enum of string, rate: Double)

Consultant                         |        Rank
| 
id | FullName | profileRank         |        id | level    | rate      
1  | aaaaa    | 'ONE'               |        1  | 'ONE'    | 1
2  | bbbbbb   | 'THREE'             |        2  | 'TWO'    | 2
3  | cccccc   | 'FOUR'              |        3  | 'THREE'  | 3
4  | dddddd   | 'THREE'             |        4  | 'FOUR'   | 4

我想过滤consultantlist byrate使用
示例:获取rate大于3的顾问

Expected result  
id | FullName | profileRank      
3  | cccccc   | 'FOUR'    

我已经搜索了文档和许多文章没有得到它的工作,请如何实现这一目标。

您不需要为您的案例编写规范。

  1. 获取所有等级和比率的排名
  2. 过滤这些值,只保留大于3的值(步骤1和步骤2可以合并)。结果将是只包含FOURrank
  3. List<Rank>
  4. list.stream(rank => rank.level).collect(toList())
  5. 步骤3的结果将被传递到一个存储库方法,如List<Consultant> findByProfileRankIn(List<String> levelNames)

另一种选择是像这样连接使用JPA标准连接没有关系的表

如果你仍然想要一个规范也是可能的。Spring Data Join with Specifications

最新更新