您的位置:首页 > 其它

JPA Predicate复杂查询排序

2017-11-08 09:21 633 查看
使用Predicate查询时,如果不分页,但是要排序,此时pageable无法使用。可以使用如下方法:

Specification<UserModel> spec = new Specification<UserModel>() {  

    public Predicate toPredicate(Root<UserModel> root,  

            CriteriaQuery<?> query, CriteriaBuilder cb) {  

        Predicate p1 = cb.like(root.get("name").as(String.class), "%"+um.getName()+"%");  

        Predicate p2 = cb.equal(root.get("uuid").as(Integer.class), um.getUuid());  

        Predicate p3 = cb.gt(root.get("age").as(Integer.class), um.getAge());  

        //把Predicate应用到CriteriaQuery中去,因为还可以给CriteriaQuery添加其他的功能,比如排序、分组啥的  

        query.where(cb.and(p3,cb.or(p1,p2)));  

        //添加排序的功能  

        query.orderBy(cb.desc(root.get("uuid").as(Integer.class)));  

          

        return query.getRestriction();  

    }  

};  

引用地址:http://blog.csdn.net/tfy1332/article/details/51245470
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: