Hibernate使用count(*)取得表中记录总数
来源:互联网 发布:软件 成本 知乎 编辑:程序博客网 时间:2024/06/05 20:45
Hibernate使用count(*)取得表中记录总数
- 博客分类:
- HIbernate
HibernateJPASQL
- /**
- * @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();
0 0
- Hibernate中如何使用count(*)取得表中记录总数
- Hibernate中如何使用count(*)取得表中记录总数
- Hibernate中如何使用count(*)取得表中记录总数
- Hibernate使用count(*)取得表中记录总数
- Hibernate使用count(*)取得表中记录总数
- Hibernate使用count(*)取得表中记录总数
- Hibernate使用count(*)取得表中记录总数
- Hibernate使用count(*)取得表中记录总数(跨Hibernate3.x版本问题)(转)
- Hibernate中使用count(*)统计记录总数
- Hibernate使用count(*)得到数据总数
- hibernate取记录总数
- 分表查询,分表查询count记录总数
- hibernate中HQL查询count返回query取得其长度
- Hibernate中使用COUNT DISTINCT
- Hibernate 统计记录总数方法汇总
- 取得查询的记录总数分页显示用的方法
- MS SQLSERVER中如何快速获取表的记录总数
- MS SQLSERVER中如何快速获取表的记录总数
- 移动端常见的一些兼容性问题
- java设计模式之装饰模式
- mac下添加安卓开发调试设备
- Office在线预览及PDF在线预览的实现方式大集合
- 游标的使用
- Hibernate使用count(*)取得表中记录总数
- HG255D网页摄像头配置
- 友盟开发APi(统一APK数)
- 错误中学习--tomcat无法启动
- #112 – Navigating the Visual Tree in Code(在后台代码中导航可视树)
- 将pugixml库编译成动态库的做法
- python sorted()用法详解
- HTML head 头标签
- htML+CSS3-》第3阶段:HTML5之CSS3基础与加强 下