You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate 6中无法为from子句设置子查询的问题求助

Hibernate 6中无法为from子句设置子查询的问题求助

大家好,我最近在写一段代码,想要基于原查询生成对应的计数查询,但卡在了编译环节,问题就出在 countQuery.from(sqmSubQuery); 这一行。

我把完整的代码贴出来,麻烦各位帮忙看看哪里有问题:

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Long> countQuery = builder.createQuery(Long.class);

// 创建子查询
SqmSubQuery sqmSubQuery = (SqmSubQuery<Tuple>) countQuery.subquery(Tuple.class);
// 获取原查询的查询规格
SqmSelectStatement sqmOriginalQuery = (SqmSelectStatement) query;
SqmQuerySpec sqmOriginalQuerySpec = sqmOriginalQuery.getQuerySpec();

// 复制原查询的查询部分到子查询
sqmSubQuery.setQueryPart(sqmOriginalQuerySpec.copy(SqmCopyContext.simpleContext()));

// 设置子查询的选择项为实体ID
Root<T> subQuerySelectRoot = (Root<T>) sqmSubQuery.getRoots().iterator().next();
sqmSubQuery.multiselect(subQuerySelectRoot.get("id").alias("id"));

// 设置计数查询的选择项
countQuery.select(builder.count(builder.literal(1)));
// 就是这行代码编译报错,无法将子查询设置到from子句中
countQuery.from(sqmSubQuery);

我本来的思路是把原查询作为子查询嵌套到计数查询的from里,但这行代码始终过不了编译,试了好几种方式都不行,有没有熟悉Hibernate 6的大佬能给我指个方向?

备注:内容来源于stack exchange,提问作者Jana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:37:41