1. 程式人生 > >JPA Predicate複雜查詢排序

JPA Predicate複雜查詢排序

使用Predicate查詢時,如果不分頁,但是要排序,此時pageable無法使用。可以使用如下方法:

  1. Specification<UserModel> spec = new Specification<UserModel>() {  
  2.     public Predicate toPredicate(Root<UserModel> root,  
  3.             CriteriaQuery<?> query, CriteriaBuilder cb) {  
  4.         Predicate p1 = cb.like(root.get("name"
    ).as(String.class), "%"+um.getName()+"%");  
  5.         Predicate p2 = cb.equal(root.get("uuid").as(Integer.class), um.getUuid());  
  6.         Predicate p3 = cb.gt(root.get("age").as(Integer.class), um.getAge());  
  7.         //把Predicate應用到CriteriaQuery中去,因為還可以給CriteriaQuery新增其他的功能,比如排序、分組啥的
  8.         query.where(cb.and(p3,cb.or(p1,p2)));  
  9.         //新增排序的功能
  10.         query.orderBy(cb.desc(root.get("uuid").as(Integer.class)));  
  11.         return query.getRestriction();  
  12.     }  
  13. };  
引用地址:http://blog.csdn.net/tfy1332/article/details/51245470