码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate使用count(*)取得表中记录总数

时间:2016-05-16 12:44:23      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:

 

Java代码  技术分享
  1. /** 
  2.   * @TODO:查询某一年度的所有计划数量 
  3.   */  
  4. public int findCountByYear(String currYear) {  
  5.     String hqlString = "select count(*) from WaterPlan as p where p.planYear =‘"+currYear+"‘";  
  6.     Query query = this.getSession().createQuery(hqlString);  
  7.           
  8.     return ((Number)query.uniqueResult()).uniqueResult();  
  9. }  

 从Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,3.2版的很多sql函数如count(), sum()的唯一返回值已经从Integer变为Long,如果不升级代码,会得到一个ClassCastException。 

这个变化主要是为了兼容JPA,可以在hibernate.org的最新文档中找到说明。 

Hibernate Team也提供了一个与原来兼容的解决方案:

Java代码  技术分享
  1. Configuration classicCfg = new Configuration();   
  2. classicCfg.addSqlFunction( "count", new ClassicCountFunction());   
  3. classicCfg.addSqlFunction( "avg", new ClassicAvgFunction());   
  4. classicCfg.addSqlFunction( "sum", new ClassicSumFunction());   
  5. SessionFactory classicSf = classicCfg.buildSessionFactory();   

 
或 

Java代码  技术分享
  1. //int count = ((Integer)query.uniqueResult()).intValue();   
  2. //改成   
  3.   
  4. int count = ((Number)query.uniqueResult()).intValue();   
  5.   
  6. //这样就可以两个版本同时兼容.   

  

Java代码  技术分享
    1. //参考代码  
    2. //第一种方法:  
    3.   String hql = "select count(*) from User as user";  
    4.   Integer count = (Integer)getHibernateTemplate().find(hql).listIterator().next();  
    5.   return count.intValue();  
    6.   
    7. //第二种方法:  
    8.  String hql = "select count(*) from User as user";  
    9.   return ((Integer)getHibernateTemplate().iterate(hql).next()).intValue();  
    10.   
    11. //第三种方法:  
    12.  String hql = "select count(*) from User as user";  
    13.  Query query =  getHibernateTemplate().createQuery( getSession(),hql);  
    14.  return ((Integer)query.uniqueResult()).intValue();   

Hibernate使用count(*)取得表中记录总数

标签:

原文地址:http://www.cnblogs.com/tanhao/p/5497511.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!