当前位置:  开发笔记 > 编程语言 > 正文

JPA CriteriaQuery实现Spring Data Pageable.getSort()

如何解决《JPACriteriaQuery实现SpringDataPageable.getSort()》经验,为你挑选了0个好方法。

我使用JPA CriteriaQuery构建我的动态Query并传入Spring Data Pageable对象:

sort=name,desc

在后端,我的存储库中有一个方法来支持动态查询:

public Page findByCriteria(String username, Pageable page) {
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery cq = cb.createQuery(User.class);
    Root iRoot = cq.from(User.class);
    List predicates = new ArrayList();

    if (StringUtils.isNotEmpty(username)) {
        predicates.add(cb.like(cb.lower(iRoot.get("username")), "%" + username.toLowerCase() + "%"));
    }

    Predicate[] predArray = new Predicate[predicates.size()];
    predicates.toArray(predArray);

    cq.where(predArray);

    TypedQuery query = em.createQuery(cq);

    int totalRows = query.getResultList().size();

    query.setFirstResult(page.getPageNumber() * page.getPageSize());
    query.setMaxResults(page.getPageSize());

    Page result = new PageImpl(query.getResultList(), page, totalRows);

    return result;
}

注意:我只为演示目的放了一个参数.

但是返回的数据是未排序的,因此我想问一下在CriteriaQuery中实现Pageable的任何方法.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有