gpt4 book ai didi

jpa criteria builder 结合了分页和计数结果

转载 作者:行者123 更新时间:2023-12-05 07:52:03 25 4
gpt4 key购买 nike

实现分页,您可以使用条件生成器从结果集中返回一个页面。但是,如果您需要获得全部结果(页数),则必须使用相同的计数条件运行单独的查询。

有没有办法将两者组合成单个数据库调用并节省性能而不返回完整集并自己实现页面?

    CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<EntityJpa> cq = cb.createQuery(EntityJpa.class);
Root<EntityJpa> root = cq.from(EntityJpa.class);
Predicate p = cb.conjunction();
cq.where(p);
TypedQuery<EntityJpa> tq = em.createQuery(cq);
return tq.getResultList();

和计数

    CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<EntityJpa> r = cq.from(EntityJpa.class);
Predicate p = cb.conjunction();
cq.where(p);
cq.select(cb.count(r));
TypedQuery<Long> tq = em.createQuery(cq);
return tq.getSingleResult().intValue();

最佳答案

CriteriaQuery<Long> cq = cb.createQuery(Long.class);
cq.select(cb.count(root)).where(pred).distinct(true);
Long maxPages = em.createQuery(cq).getSingleResult();

我们使用这样的东西。我正在研究一种缓存结果的方法,这样我就不必在每次分页时都运行计数,但这现在对我们有用。

关于jpa criteria builder 结合了分页和计数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34115782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com