`
zzhangyx
  • 浏览: 69886 次
  • 性别: 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;
}

分享到:
评论

相关推荐

    hibernate 中HQL语句查询学习笔记

    ### Hibernate中HQL语句查询学习笔记 #### HQL基础 **HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及...

    hql语句查询

    这种运算方式在HQL中并不常见,但在某些特定场景下可能需要用到。 - **查询单个对象**: ```java Object uniqueResult = session.createQuery("FROM TableName WHERE column1 = :value").setParameter("value", ...

    超级详细的hql查询语句教程

    Hibernate Query Language(HQL)是一种面向对象的查询语言,其语法与SQL相似但并非完全相同。HQL的设计旨在更好地支持面向对象编程特性,比如继承、多态以及关联等概念。通过HQL,开发人员可以在不牺牲对象模型灵活...

    hql查询语句

    本文将详细探讨HQL中的查询语句,特别是涉及的统计函数和一些关键子句。 首先,`from`子句用于指定查询的源,如`from Person`表示从`Person`持久化类中选取所有实例。为了提高可读性,通常会使用别名,如`from ...

    HQL 语法总结 实体查询

    本文将详细介绍HQL中的实体查询,并提供一些实际应用场景。 ##### 示例:TUser 类 假设有一个名为 `TUser` 的类,我们可以通过以下方式来进行实体查询: ```java String hql = "from TUser"; ``` 执行这条语句会...

    JSP 开发之hibernate的hql查询多对多查询

    本篇将重点讲解如何在Hibernate的HQL中执行多对多查询,并通过一个具体的实例来说明。 在Hibernate中,多对多关系是通过中间表(也称为连接表)来实现的。以试题(TmEduExamContent)和分组信息(ClassicCasesGroup...

    Hibernate HQL教程

    - **解释**: 在映射文件中定义HQL查询,便于复用和维护。 #### 1.3 HQL的嵌套子查询 ##### 1.3.1 嵌套子查询的概念 - **解释**: 子查询是在另一个查询语句内部的查询,用于增强查询的灵活性和表达能力。 ##### ...

    Hql语句注意事项总结

    - **统计函数与分组**:在Hql中,`group by`语句用于对数据进行分组,常与聚合函数如`sum()`、`count()`、`max()`等结合使用。例如,你可以选择特定字段进行分组,并计算每个组的总和或计数。 - **约束条件的位置*...

    HQL经典查询语句[文].pdf

    在软件开发领域,尤其是涉及到对象关系映射(ORM)框架如Hibernate时,HQL(Hibernate Query Language)是一种非常重要的查询工具。HQL是Hibernate提供的面向对象的查询语言,它允许开发者以类和属性的方式来查询...

    使用Distinct查询.rar

    在SQL语言中,`DISTINCT`关键字是一种非常重要的查询方式,它用于消除查询结果中的重复行,从而确保返回的数据是唯一的。本教程将深入探讨如何使用`DISTINCT`查询,以及在不同场景下它的应用。 一、DISTINCT基本...

    hibernate查询集合.pdf

    在HQL中,`from`子句是最基础的查询形式,例如`from Student`,这将返回`Student`类的所有实例。在Java代码中,我们可以使用`session.createQuery()`创建HQL查询,并通过`query.list()`获取结果列表。需要注意的是,...

    EFCore查询不重复数据Distinct.docx

    `Distinct()`方法是C# LINQ中用于去除重复元素的关键操作,而在EFCore中,它可以应用于数据库查询来过滤掉重复记录。 首先,让我们深入理解`Distinct()`方法。在C#中,`Distinct()`方法通过比较元素的默认等价关系...

    mysql中distinct用法【SQL中distinct的用法】.docx

    当我们在查询表中数据时,可能会遇到重复值的情况,这时使用 DISTINCT 关键字可以帮助我们返回唯一的值。 DISTINCT 的基本用法 DISTINCT 关键字可以作用于单列或多列。下面是一个简单的示例: ``` SELECT ...

    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....

    课程hibernate查询集合.pdf

    from子句是HQL中最基础的部分,用于获取指定类的所有实例。例如,`from Student`将返回所有`Student`类的实例。可以指定别名,如`from Student s`,这里的`s`是`Student`的别名,便于后续操作。需要注意的是,HQL对...

    分析MySQL中优化distinct的技巧

    在MySQL数据库中,优化`DISTINCT`操作是一个关键的性能提升策略,特别是在处理大量数据时。上述场景中,用户遇到了一个问题:对一个10G以上的单表`user_access_xx_xx`执行`SELECT COUNT(DISTINCT nick)`以统计唯一...

    Hibernate学习资料(离线查询)

    在Hibernate中进行查询的方式有很多,包括HQL、Criteria API以及Native SQL等。本篇主要关注的是使用Criteria API来进行查询。 ### Criteria API Criteria API是Hibernate提供的一个非常强大的查询工具,它可以...

Global site tag (gtag.js) - Google Analytics