java hql 计数_Hibernate HQL:获取结果计数,而无需实际返回结果

我想获取动态生成的HQL查询的结果计数,而无需实际获取结果列表。说我的查询是这样的:

select Company company LEFT OUTER JOIN FETCH products product

我在Hibernate文档中看到:

您可以计算查询结果的数量而无需返回它们:

( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()

我怀疑应该用查询替换 .... ,但这不起作用,因为HQL不支持FROM中的子选择。

那么,我应该如何计算动态生成的HQL查询的结果?我认为通过执行它并获取结果列表的.size()可能是不必要的开销。

干杯!

更新:

我使用此正则表达式转换查询:

Number num = (Number) em.createQuery(dynamicQuery.replaceAll("select \\w+ from ", "select count(*) from ")).getSingleResult();

我得到这个:

块引用

EJB异常:嵌套的异常是:java.lang.IllegalArgumentException:org.hibernate.QueryException:查询指定的联接获取,但是选择列表中不存在所获取的关联的所有者[FromElement

{显式,不是集合联接,获取联接,非获取-懒惰的属性,classAlias =产品,role =

org.myCompany.applicant.entity.Applicant.products,tableName =

PRS_DEV.PRODUCT,tableAlias = products1_,origin = PRS_DEV.APPLICANT申请人0_,列=

{applicant0_.APPLICANT_ID,className = org。

myCompany.product.entity.Product}}] [

从org.myCompany.applicant.entity.Applicant申请人LEFT OUTER JOIN

FETCH申请人.products产品中 选择count( ) ];

嵌套的异常是:java.lang.IllegalArgumentException:org.hibernate.QueryException:查询指定的联接获取,但是选择列表中不存在所获取的关联的所有者[FromElement

{显式,不是集合联接,获取联接,非获取-懒惰的属性,classAlias =产品,role =

org.myCompany.applicant.entity.Applicant.products,tableName =

PRS_DEV.PRODUCT,tableAlias = products1_,origin = PRS_DEV.APPLICANT申请人0_,列=

{applicant0_.APPLICANT_ID,className = org。

myCompany.product.entity.Product}}]

[从org.myCompany.applicant.entity.Applicant申请人LEFT OUTER JOIN

FETCH申请人.products产品中选择count()]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值