Hibernate使用count(*)取得表中记录总数
- /**
- * @TODO:查询某一年度的所有计划数量
- */
- public int findCountByYear(String currYear) {
- String hqlString = "select count(*) from WaterPlan as p where p.planYear ='"+currYear+"'";
- Query query = this.getSession().createQuery(hqlString);
- return ((Number)query.uniqueResult()).uniqueResult();
- }
从Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,3.2版的很多sql函数如count(), sum()的唯一返回值已经从Integer变为Long,如果不升级代码,会得到一个ClassCastException。
这个变化主要是为了兼容JPA,可以在hibernate.org的最新文档中找到说明。
Hibernate Team也提供了一个与原来兼容的解决方案:
- Configuration classicCfg = new Configuration();
- classicCfg.addSqlFunction( "count", new ClassicCountFunction());
- classicCfg.addSqlFunction( "avg", new ClassicAvgFunction());
- classicCfg.addSqlFunction( "sum", new ClassicSumFunction());
- SessionFactory classicSf = classicCfg.buildSessionFactory();
或
- //int count = ((Integer)query.uniqueResult()).intValue();
- //改成
- int count = ((Number)query.uniqueResult()).intValue();
- //这样就可以两个版本同时兼容.
- //参考代码
- //第一种方法:
- String hql = "select count(*) from User as user";
- Integer count = (Integer)getHibernateTemplate().find(hql).listIterator().next();
- return count.intValue();
- //第二种方法:
- String hql = "select count(*) from User as user";
- return ((Integer)getHibernateTemplate().iterate(hql).next()).intValue();
- //第三种方法:
- String hql = "select count(*) from User as user";
- Query query = getHibernateTemplate().createQuery( getSession(),hql);
- return ((Integer)query.uniqueResult()).intValue();
Hibernate使用count(*)取得表中记录总数的更多相关文章
- MS SQLSERVER中如何快速获取表的记录总数
在数据库应用的设计中,我们往往会需要获取某些表的记录总数,用于判断表的记录总数是否过大,是否需要备份数据等.我们通常的做法是:select count(*) as c from tableA .然而对 ...
- NSIS:在注册表中记录安装路径以便重装或升级时读取
原文 NSIS:在注册表中记录安装路径以便重装或升级时读取 在NSIS中,这个功能是非常有用的,可以避免用户把程序安装到多个位置的尴尬. 第1步:在“安装目录选择页面”前面加入以下代码: 1 !def ...
- oracle数据库误删的表以及表中记录的恢复
oracle数据库误删的表以及表中记录的恢复 一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: --1.从flash bac ...
- sqlserver 表中记录生成insert,可以加条件,可以生成建表语句
sqlserver 表中记录生成insert,可以加条件,可以生成建表语句 create PROCEDURE [sp_getinsert] ( ) , --如果非默认架构,可以加上架构名 例如:sch ...
- SQL迅速增加表中记录语句
很多时候我么需要为表中疯狂增加N条记录,那么我们该使用什么语句实现该功能呢?如下: insert into 表名(字段1,字段2,字段3....) select 字段1,字段2,字段3.... fr ...
- mysql 删除表中记录
一.清除mysql表中数据 delete from 表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以 ...
- 【转】MySQL数据表中记录不存在则插入,存在则更新
mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问 ...
- sql 循环表中记录
=========================================================================循环排序查询数据=================== ...
- 以A表中的值快速更新B表中记录的方法
1.问题描述 有两张表,A表记录了某些实体的新属性,B表记录了每个实体的旧属性,现在打算用A中的属性值去更新B中相同实体的旧属性,如下图所示: 类似这样的需求,怎样做比较高效呢? 2.制作模拟数据 ...
随机推荐
- [MySQL] 忘记root账户密码怎么办
一.缘由 由于各种原因,我们会忘记mysql的root密码. 二.解决办法 方法一:skip-grant-tables方式启动 1.停止mysql服 务 service mysqld stop 2.以 ...
- Python基础篇【第1篇】: Python基础
Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有 ...
- 10. Max Points on a Line
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
- JAVA 新手问题: Request 编码编译出错,Unhandled exception type UnsupportedEncodingException
新手: 编写如下代码 private void Exec(HttpServletRequest Req,HttpServletResponse Response) //throws ServletEx ...
- 关于javascript tween的学后小感想
今天决定了解一下tween算法,首先得下载个tween.js看看吧,好吧,有点被惊艳到了. 也让我想起了之前上数学课时,听到过的一句话:“数学世界是神秘.纯洁.有魅力的”,一直 记得这句话,期待有朝一 ...
- Matrix的一些知识
1.什么是ColorMatrix ColorMatrix是一个颜色矩阵,它定义了一个 4*5 的float[]类型的矩阵 颜色矩阵,而图像的 RGBA 值则存储在一个5*1的颜色分量矩阵C中 所以为了 ...
- 一个页面从输入URL 到页面加载显示完成的过程中都发生了什么
前端面试/笔试必考问题,越详细越好 先简单得讲: 浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求: 服务器交给后台处理完成后返回数据,浏览器接收文件(HTML.JS.CSS. ...
- leetcode 137
137. Single Number II Given an array of integers, every element appears three times except for one. ...
- Egret Wing3 商城插件下载和使用
吐槽下官网目前找不到插件商城入口 . 根据管理员提供的地址: http://store.egret.com/work/21-0.html 平时我们可以在wing里直接打开商城. 打开wing使用向导 ...
- guava cache
适用场景 缓存在很多场景下都是相当有用的.例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存. Guava Cache与ConcurrentMap很相似,但 ...