大家好,我正在嘗試將標(biāo)準(zhǔn)與分頁(yè)一起使用,但我的代碼不起作用,這里是:public Page<Person> getAuthorizationsTest() { PageRequest pageRequest = new PageRequest(1, 5); CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); CriteriaQuery<Person> queryBase = criteriaBuilder.createQuery(Person.class); Root<Person> root = queryBase.from(Person.class); List<Predicate> queryConditions = new ArrayList<>(); Predicate predicate = criteriaBuilder.like(root.get("name"), "%[myValue]%"); queryConditions.add(predicate); queryBase.where(queryConditions.toArray(new Predicate[]{})); TypedQuery<Person> query = em.createQuery(queryBase); List<Person> list = query.getResultList(); Page<Person> authorizations = new PageImpl<Person>(list, pageRequest, list.size()); return authorizations;}一切看起來(lái)都很好,但是當(dāng)我執(zhí)行它時(shí),我會(huì)收到一個(gè)包含所有結(jié)果的列表頁(yè)面,而不僅僅是我的 pageRequest 中指定的結(jié)果我究竟做錯(cuò)了什么 ?
2 回答

波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
您沒(méi)有使用分頁(yè)請(qǐng)求:
列表列表 = query.getResultList();
此查詢將始終查詢所有結(jié)果,這是非常低效的。
相反,您應(yīng)該以Spring 方式執(zhí)行此操作,即您應(yīng)該使用擴(kuò)展 a 的存儲(chǔ)庫(kù)接口PagingAndSortingRepository
(例如 JpaRepository 接口)。
然后只需使用一種方法對(duì)結(jié)果進(jìn)行分頁(yè),例如文檔中所述的 findAll :
PagingAndSortingRepository<User, Long> repository = // … get access to a bean Page<User> users = repository.findAll(new PageRequest(1, 20));
添加回答
舉報(bào)
0/150
提交
取消