java getquerydata_java – JPA CriteriaQuery实现了Spring Data Pageable.getSort()

我使用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的任何方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值