从 Pageable.getSort() 转换为 List<Order> 以在 Spring 存储库自定义中对 Criteria API 进行的查询进行排序

And*_*qua 2 java jpa criteria-api spring-data-jpa

我已经实现了一个我的自定义 Spring 存储库,它在输入中接收一个org.springframework.data.domain.Pageable对象。此Pageable对象具有以下排序属性(例如):id: DESC,name: ASC.

我需要将pageable.getSort()属性转换为 aList<Order>以便为该criteriaQuery.orderBy(List<Order>)方法设置顺序。

为了检索分页结果,我使用了new PageImplpageable对象传递给它的方法,但这不管理排序。

TypedQuery<Entity> typedQuery = entityManager.createQuery(criteriaQuery);
typedQuery.setFirstResult(pageable.getOffset());
typedQuery.setMaxResults(pageable.getPageSize());
Page<Entity> page = new PageImpl<Entity>(typedQuery.getResultList(), pageable, typedQuery.getMaxResults());
return page;
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?谢谢,安德里亚

vip*_* cp 8

可以使用queryUtils.

 import org.springframework.data.jpa.repository.query.QueryUtils;
    criteriaQuery.orderBy(QueryUtils.toOrders(pageable.getSort(), rootEntity, criteriaBuilder));
Run Code Online (Sandbox Code Playgroud)