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
相关产品推荐
相关产品推荐

