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

当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]

    点赞 打赏 评论

相关推荐 更多相似问题