java - 如何调整 JPA 的大小以适应 Criteriaquery

标签 java hibernate jpa criteriaquery

我有这个Java代码:

CriteriaBuilder qb = entityManager.getCriteriaBuilder(); 
CriteriaQuery<Long> cq = qb.createQuery(Long.class);
cq.select(qb.count(cq.from(MyEntity.class))); 
cq.where(/*your stuff*/); 
return entityManager.createQuery(cq).getSingleResult();

我想执行以下条件查询:

SELECT COUNT(p),pa.nomPays FROM SessionPersonne s JOIN s.personne p , 
p.entreprise e , e.adresse a , a.localite l , l.pays pa , s.session session 
WHERE size(s.passageCollection)  > 0   GROUP BY pa.nomPays

但是 size(s.passageCollection) > 0 如何处理关键查询呢?

谢谢你。

最佳答案

本教程很好地解释了一切。 http://www.baeldung.com/jpa-pagination

为了防止链接中断,我将添加一个段并添加应该放置的位置

int pageNumber = 1;
int pageSize = 10;
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();

CriteriaQuery<Long> countQuery = criteriaBuilder.createQuery(Long.class);
countQuery.select(criteriaBuilder.count(countQuery.from(Foo.class)));
Long count = entityManager.createQuery(countQuery).getSingleResult();

CriteriaQuery<Foo> criteriaQuery = criteriaBuilder.createQuery(Foo.class);
Root<Foo> from = criteriaQuery.from(Foo.class);
CriteriaQuery<Foo> select = criteriaQuery.select(from);
select.where(criteriaBuilder.equal(fromRoot.get("entityColumb"), "bar")));

TypedQuery<Foo> typedQuery = entityManager.createQuery(select);
while (pageNumber < count.intValue()) {
    typedQuery.setFirstResult(pageNumber - 1);
    typedQuery.setMaxResults(pageSize);
    System.out.println("Current page: " + typedQuery.getResultList());
    pageNumber += pageSize;
}

关于java - 如何调整 JPA 的大小以适应 Criteriaquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36570198/

相关文章:

java.rmi.ConnectException : Connection refused to host 192. 168.56.1

java - 由于 keystore 文件导致 ssl 握手异常

java - JPA 加入两个辅助表

java - 在 Java 中向上转型

java - 如何获取 runtime.getruntime.exec ("netstat"的完整信息)

java - Spring数据使用jpa在SQL Server中存储utf-8字符串更方便的方法

java - 带有 Maven 客户表单 Web 应用程序的 Spring MVC 无法正常工作

java - ( hibernate ) java.sql.SQLException : Field 'xxxx' doesn't have a default value

java - Play Framework "find"(Finder) 结果缺少 OneToMany 关系数据

mysql - 如何在 Spring JpaRepository 中使用自定义 DTO 进行可分页响应