首页 > 解决方案 > 计算 Hibernate JPA 中子查询返回的行数

问题描述

我想在 Hibernate JPA 中执行以下查询。

select distinct count(*)
from (
         select distinct entity1.CODE                              as col_0_0_,
                         string_agg(entity2.PRODUCT_IMAGE_URL, ',') as col_1_0_,
                         count(entity1.CODE)                       as col_2_0_
         from entity1
                  inner join entity2 on entity1.id = entity2.entity1_ID                 
         where entity1.id = 1           
         group by entity1.CODE
     ) as cnt;

知道如何使用 Criteria API 做到这一点吗?

标签: javahibernatejpajpqlcriteria-api

解决方案


您将需要以下内容:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Long> criteriaQuery = cb.createQuery(Long.class);
Root<Entity1> root = criteriaQuery.from(MyEntity.class);
criteriaQuery.select(criteriaBuilder.countDistinct(entityRoot.get("code")));
Long count = entityManager.createQuery(criteriaQuery).getSingleResult();

推荐阅读