如何解决使用Spring Boot规范API根据计数订购结果
请考虑以下实体。
PS:该模型具有更多字段,但为简短起见,我只发布了相关字段
Class Employee {
private String name;
private String country;
private String region;
private String department
@OnetoMany
private Set<Skill> skills;
}
Class Skill {
private name;
}
我正在使用Spring Boot规范API来过滤区域,国家等不同领域的员工。
public class EmployeeSpec implements Specification<Employee> {
@Override
public Predicate toPredicate(Root<Employee> root,CriteriaQuery<?> cq,CriteriaBuilder cb) {
String fielName = //some field name
String fieldValue = //some field value
switch (fielName ) {
case "country":
return cb.equal(root.get("country"),fieldValue);
case "department":
return cb.equal(root.get("department"),fieldValue);
case "region":
return cb.equal(root.get("region"),fieldValue);
}
}
我想对结果进行排序,以使具有最高技能的员工排在首位。我不确定如何使用规范来实现这一点。
解决方法
您可以使用CriteriaBuilder.size(..)
。对于您的情况,代码如下所示:
cq.orderBy(cb.desc(cb.size(root.get("skills"))));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。