JPA Predicate複雜查詢排序
阿新 • • 發佈:2019-01-23
使用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"
- 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();
- }
- };