今天在做分页的时候一直被无名的错误所干扰(也不算错误吧,就是没有达到自己理想的结果),想通过hibernate从数据库中找出满足条件的记录数,于是使用了以下的语句:
Query query=this.getSession().createQuery("select count(u.id) as number from User u");
int num=((Integer)query.iterate().next()).intValue();
可是每当程序走到int num=((Integer)query.iterate().next()).intValue();这里的时候就不往下执行了,也不报错误,我郁闷、纠结啊,整整研究了一个小时,
无意中看到了一篇拯救了我的文章:
从Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,3.2版的很多sql函数如count(), sum()的唯一返回值已经从Integer变为Long,如果不升级代码,会得到一个ClassCastException。
豁然开朗,原来是不兼容引起的,那解决办法是什么呢?于是我继续浏览,别说网络还真发达,一下子就找到了。
解决方法:
返回的结果既然类型不一样,那怎样兼容呢?用父接口统一表示。
(1)返回结果用Number标识。
(2)取值的时候根据个人喜好用Number的方法(如下),个人推荐用longValue
于是把原先的代码改成以下的形式,立马得到了自己想要的结果。
Query query=this.getSession().createQuery("select count(u.id) as number from User u");
int num=((Number)query.iterate().next()).intValue();
分享到:
相关推荐
总结来说,Hibernate通过Criteria、HQL和Query API提供了丰富的查询机制,满足了各种数据库操作需求。而分页查询是大数据量场景下的常用策略,Hibernate提供了简单的API来实现。理解并熟练掌握这些查询方式,将有助...
- `countByExample(entity)`: 计算满足特定条件的记录数,通常配合`Projection`接口的`count()`方法。 5. **分页查询**:在公共查询类中,可以添加支持分页查询的方法,如`listByPage(pageNum, pageSize)`,使用`...
预估总记录数时,可以采用数据库提供的函数,如SQL Server的`SELECT COUNT(*)`,而不是每次都计算所有数据。 - 错误处理:确保在用户请求非法页码或记录数时,能够给出合适的提示或重定向。 - 用户体验:提供每页...
**HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及关联关系的查询。 ##### 默认数据库表和数据 在本文档...
在实际开发中,分页是非常常见的需求,例如,我们需要从数据库中检索出某个表中的所有记录,但是这些记录可能有成千上万条,這時候我们需要对这些记录进行分页,以便于用户的浏览和操作。分页的主要目的是为了提高...
Hibernate 是一个开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而简化了数据访问逻辑。在 Hibernate 中,执行查询操作的主要方式之一是使用 Hibernate 查询语言(HQL)。 ...
在分页中,Hibernate主要用于执行数据库查询操作。 #### 四、PageBean类详解 `PageBean`类是分页算法中的核心数据结构,用于封装分页所需的各种信息: - `count`: 记录总数。 - `pageSize`: 每页显示的记录数。 -...
然而,虽然这种方式简单易用,但当处理大数据集时,可能会遇到性能问题,因为Hibernate会加载所有满足条件的结果到内存中,然后再返回指定范围的结果。为了解决这个问题,我们可以利用JDBC的SQL分页来直接在数据库...
### Hibernate中Criteria的完整用法 #### 一、概述 在Hibernate框架中,`Criteria`是一种非常实用且灵活的对象查询方式。它允许开发者通过构造一个`Criteria`对象来定义复杂的查询逻辑,从而实现对数据库中数据的...
而"工具"可能指的是Hibernate作为一个强大的ORM(对象关系映射)工具,帮助开发者简化数据库操作。 遗憾的是,提供的文件名称"Real Java Project SVN.pdf"看似与Hibernate Criteria查询无关,可能是其他Java项目或...
- **count()** 方法用于统计满足条件的记录数量。 ### 总结 以上内容涉及了使用 HQL 和 DetachedCriteria 进行查询、参数化查询、执行更新操作以及简单的统计查询等常见的 Hibernate 操作。这些知识点对于理解和...
它不仅简化了数据库操作,还提供了多种查询语言来满足不同场景下的需求。其中,Hibernate Query Language (HQL)作为其核心组成部分之一,因其语法结构接近于SQL,而被广泛应用于数据查询和更新。 #### HQL语法概览 ...
标题:“Hibernate 经常用的一些HQL语句” 描述:“可以让我们更方便的学习Hibernate” ### HQL(Hibernate Query Language)在Hibernate中的应用 ...掌握这些技巧,对于高效地利用Hibernate进行数据库操作至关重要。
子查询可以嵌套在其他查询中,用于获取满足特定条件的数据。JOIN操作允许从多个表中合并数据,常见的JOIN类型有INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN。 在数据库设计方面,Oracle支持实体关系模型...
- 如果`page`参数为-1,表示需要计算总页数,这里先获取满足条件的所有记录数量,然后根据`count`计算总页数。 - 设置查询起始位置和查询数量,`criteria.setFirstResult((page-1)*count)`和`criteria....
- **解释**: `OR`操作符用于选择满足任一条件的结果。 ##### 1.1.16 ORDER BY对结果进行排序 - **语法**: ```hql SELECT s FROM Student s ORDER BY s.sage ASC; SELECT s FROM Student s ORDER BY s.sage DESC;...
`COUNT(c)`用于统计满足条件的记录数量,返回的结果是`Number`类型,需要转换成具体的数值类型。 - **返回多个字段**: - **Object[] 数组**: ```java List[]> list = session.createQuery("SELECT c.name, c....
数据库是IT领域中至关重要的部分,特别是在数据存储和管理中。本篇文章主要关注数据库相关的面试和笔试题目,尤其是关于查找和删除重复数据的方法,以及一些基础的数据库设计原则。 首先,我们来探讨如何在数据库中...
下面是具体的SQL语句示例,用于创建满足上述条件的表结构: ```sql -- 删除旧表 DROP TABLE person_course; DROP TABLE person; DROP TABLE course; -- 创建人员表 CREATE TABLE person ( id varchar(20) PRIMARY...
这里,“from Student”表示查询Student表中的所有记录,并将结果映射为`Student`对象列表。`createQuery`方法用于创建一个HQL查询对象,`list()`方法则返回查询结果。 #### 复杂查询示例 当需要进行更复杂的查询...