计算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做到这一点?

解决方法

您将需要以下内容:

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();