【发布时间】:2019-03-11 14:38:15
【问题描述】:
嘿,我的查询有一个小问题。
我需要找到具有特定能力(如许可证和其他东西)的用户。
假设我有有能力的用户:
- 亚历克斯:A、B、C
- 约翰:A,B
- 史蒂夫:B,C
请求:
- workers?competences=A,B,C - 应该只返回 Alex
- 目前返回 Alex 3 次,John 和 Steve 两次返回
- workers?competences=A,C - 应该只返回 Alex
- 目前返回 Alex 两次,John 和 Steve 一次
- workers?competences=B,C - 应该返回 Alex 和 Steve
- 目前返回 Alex 两次,Steve 两次,John 一次
- workers?competences=B - 应该返回所有用户
- 目前每个人都返回一次
目前它会找到所有具有能力 A 或 B 或 C 的用户。
我需要它来返回具有所有插入权限的用户所以competence A AND competence B AND competence C。
这是我目前的规范:
public static Specification<WorkDetail> hasCompetences(String searchTerm) {
return (root, query, criteriaBuilder) -> {
List<String> list = new ArrayList<>(Arrays.asList(searchTerm.split(",")));
Join join = root.join("competences");
return join.get("name").in(list);
};
}
【问题讨论】:
标签: java spring-boot criteria-api