计算 Hibernate JPA 中子查询返回的行数
Posted
技术标签:
【中文标题】计算 Hibernate JPA 中子查询返回的行数【英文标题】:Count number of rows returned by a sub query in Hibernate JPA 【发布时间】:2021-02-01 12:34:06 【问题描述】:我想在 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 做到这一点吗?
【问题讨论】:
您可以添加示例实体以获取更多详细信息和关系 【参考方案1】:您将需要以下内容:
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();
【讨论】:
是的,但我有一个子查询要执行,然后计算结果返回的行数。 当然,但是您展示的示例不需要子查询。本质上,您只需计算不同的代码。如果您必须使用子查询,那么您将无法使用普通的 JPA 标准。您可以查看 Blaze-Persistence,尽管它提供了一种生成计数查询的方法:persistence.blazebit.com/documentation/1.5/core/manual/en_US/…以上是关于计算 Hibernate JPA 中子查询返回的行数的主要内容,如果未能解决你的问题,请参考以下文章