Java 使用Spring中的规范按列排序

Java 使用Spring中的规范按列排序,java,sql,spring,specifications,Java,Sql,Spring,Specifications,如何根据另一个表中实体的计数对列进行排序,这让我左右为难 我有两个实体 @Entity public class Plan { Long id; String name; PlanStatus status; LocalDateTime dateCreated; LocalDateTime lastUpdated; } 现在,我刚刚直接为使用Pagable(pageRequest)实现的存储库传递了Sort 返回smsPlanRepository.findAl

如何根据另一个表中实体的计数对列进行排序,这让我左右为难

我有两个实体

@Entity 
public class Plan {

   Long id;
   String name;
   PlanStatus status;
   LocalDateTime dateCreated;
   LocalDateTime lastUpdated;
}
现在,我刚刚直接为使用
Pagable
(pageRequest)实现的存储库传递了
Sort
返回smsPlanRepository.findAll(计划规范,页面请求)

但是有没有一种方法可以将
规范
与每个
计划
子订户
的数量一起使用呢

public Specification<Plan> hasSort(String sortBy) {
    return (root, query, criteriaBuilder) -> {
    
        return //count of by Plan in Subscribers
    }
}
公共规范hasSort(字符串排序){
返回(根、查询、准则生成器)->{
return//sub计划在订阅服务器中的计数
}
}

提前感谢您的帮助

除了可分页界面外,spring规范还可以通过criteriaBuilder api进行排序,如下所示:

public Specification<Plan> hasSort(String sortBy) {
    return (root, query, criteriaBuilder) -> {
    
    query.multiselect(root.get("fields..."),
                criteriaBuilder.count(root.get("count_field")));

    query.orderBy(criteriaBuilder.desc(criteriaBuilder.count(root.get("count_field")));
    
     return //count of by Plan in Subscribers
    }
}
公共规范hasSort(字符串排序){
返回(根、查询、准则生成器)->{
query.multiselect(root.get(“字段…”)),
criteriaBuilder.count(root.get(“count_字段”));
query.orderBy(criteriaBuilder.desc(criteriaBuilder.count(root.get(“count\u字段”)));
return//sub计划在订阅服务器中的计数
}
}
public Specification<Plan> hasSort(String sortBy) {
    return (root, query, criteriaBuilder) -> {
    
    query.multiselect(root.get("fields..."),
                criteriaBuilder.count(root.get("count_field")));

    query.orderBy(criteriaBuilder.desc(criteriaBuilder.count(root.get("count_field")));
    
     return //count of by Plan in Subscribers
    }
}