`
zzhangyx
  • 浏览: 70381 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

Hibernate中带distinct的hql分页查询

    博客分类:
  • JAVA
阅读更多

Hibernate中带distinct的hql分页查询

  | 0 comments

带distinct的hql查询分页时,不能使用select count(*) from (hql) 这样的方式,这样获得的总数是不对的。
这里的做法是分离出hql的select dinstinc和from之间的部分,变成 select count(distinct … ) from…

代码如下:

/**
  * select dinstinct 查询的总数
  * 这里按 select count(distinct … ) from … 获得总数.  
  * 
  * @param hql
  * @param values
  * @return
  */
private long getSelectDistinctCount(String hql, Object values{
    int distinctIndex = hql.toLowerCase().indexOf("distinct");
    int fromIndex = hql.toLowerCase().indexOf("from");
        
    hql = removeOrders(hql);
        
    String countQueryString = " select count(" + hql.substring(distinctIndex,fromIndex+ ") " + hql.substring(fromIndex);
    List countlist = this.find(countQueryString, values);
    long totalCount = (Longcountlist.get(0);

 

    if (totalCount < 1{
         return 0;
    } else 
        return totalCount;
}

分享到:
评论

相关推荐

    NHibernate hql 可用函数,函数大全

    分页查询** - **语法**: `SET FIRST RESULT &lt;起始位置&gt; SET MAX RESULTS &lt;每页数量&gt;` - **示例**: `Query q = session.createQuery("FROM Category c ORDER BY c.name DESC"); q.setMaxResults(3); q....

    hql查询语句

    在Java开发领域,尤其是使用Struts、Spring和Hibernate框架构建应用程序时,HQL(Hibernate Query Language)是一种强大的工具,用于处理对象关系映射(ORM)的数据库查询。HQL是面向对象的,允许开发者以类和对象的...

    hibernate 框架的基础四

    **HQL (Hibernate Query Language)** 是一种面向对象的查询语言,它允许开发人员使用类名和属性名来执行数据库查询,而不需要直接编写SQL语句。在进行多表检索时,HQL提供了多种连接方式,包括内连接、外连接等。 #...

    criteria进阶查询

    Criteria API 是 Hibernate 提供的一种高级查询机制,它允许开发者在不直接编写 HQL 或 SQL 语句的情况下,构建复杂的数据库查询。这个API提供了一种面向对象的方式来构建查询,使得查询更具有可读性和灵活性。 1. ...

Global site tag (gtag.js) - Google Analytics