我已经实现了一个我的自定义Spring存储库,它在输入中接收一个org.springframework.data.domain.Pageable
对象。此Pageable
对象具有以下排序属性(例如):id: DESC,name: ASC
。
我需要将pageable.getSort()
属性转换为List<Order>
才能设置criteriaQuery.orderBy(List<Order>)
方法的订单。
为了检索分页结果,我使用new PageImpl
将pageable
对象传递给它,但这不管理排序。
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;
有什么建议吗? 谢谢,Andrea
答案 0 :(得分:0)
可以使用queryUtils
完成。
import org.springframework.data.jpa.repository.query.QueryUtils;
criteriaQuery.orderBy(QueryUtils.toOrders(pageable.getSort(), rootEntity, criteriaBuilder));