iteye_19173 2009-03-04 11:17
浏览 354
已采纳

当HQL分页求count总行遇到distinct时怎么办?

如题,用Hibernate做分页,当HQL查询语句中包含distinct时,就不能正确count出结果集总行数,如:
String hqlQuery = "select distinct u.name,g.group from UserInfo u left join u.group g";

一般情况下,用该HQL求结果集总数,构建一个count hql语句

String hqlCount = "select count(*) from UserInfo u left join u.group g";

但这样出来的结果明显和原sql有差距(HQL居然不支持count(1)郁闷)

大家指点一下,如上hql要怎么样重建才能正确的count出结果总数,都研究好一两天了!

注:不希望直接query返回list.size,这样数据有压力,网络也有压力。

{
Query query = session.createQuery(hqlQuery);
long count = query.list().size();
}
这样有很大的效率问题,就是想优化它 :cry:
[b]问题补充:[/b]
To:碧海山城

我那样不得行哈,结果集并不只有一列一行,query.uniqueResult()会报错的

  • 写回答

1条回答 默认 最新

  • bhscHello 2009-03-04 12:17
    关注

    [code="java"]
    String hqlCount = "select count(*) from UserInfo u left join u.group g";

    ((Integer) query(countSql,booleanIsSql,values).uniqueResult()).intValue()

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码