`

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(); 

 

6
0
分享到:
评论
3 楼 西蜀石兰 2016-11-20  
为什么会调两次uniqueResult(),是不是写错了,亲
2 楼 yinlongfei 2010-07-29  
好,顶一个
1 楼 lfwer 2010-07-26  
写的好~顶~顶~顶啊顶~第一次顶~

相关推荐

    Hibernate Tool 使用文档

    此外,还提供了对Eclipse Web Tools Platform (WTP)的支持,这意味着如果你正在使用Eclipse WTP进行Web应用开发,Hibernate Tools也可以完美地集成到你的开发环境中。 - **Usage of Eclipse WTP**:Eclipse WTP为...

    如何安装使用hibernate tools

    【hibernate Tools】是Java开发中用于简化Hibernate框架使用的工具集,它为Eclipse提供了对Hibernate项目的集成支持。在本文中,我们将详细介绍如何安装和使用hibernate Tools,以便在开发过程中更高效地处理...

    hibernate的所有包

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作与业务对象进行松耦合,使得在Java应用中处理SQL和关系数据库变得更加便捷。在Java开发中,Hibernate扮演着至关重要的角色,它通过...

    hibernate多表联合查询

    在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **Native SQL** 本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、...

    Hibernate-基础联表模板

    Hibernate是一种开源的ORM框架,它允许开发者将Java类映射到数据库表,将Java对象映射到数据库记录。这样,我们可以通过操作Java对象来完成对数据库的操作,避免了直接编写SQL语句的繁琐工作,提高了开发效率。 2....

    Hibernate5.2.8提取包

    它将数据库表映射为Java类,表中的行映射为类的实例,实现了对象与数据库记录之间的透明转换。 2. **版本5.2.8** Hibernate 5.2.8是该框架的一个稳定版本,修复了一些已知问题,增强了性能,并提供了对最新Java...

    Hibernate 多表连接分页查询示范项目

    2. **定义关联**:在实体类中使用 @ManyToOne, @OneToOne, @OneToMany 或 @ManyToMany 等注解定义表之间的关联关系。 3. **创建 SessionFactory**:配置 Hibernate 的属性,如数据库连接信息,生成 SessionFactory ...

    hibernate根据字段生成数据库表

    - **实体类**:定义 Java 实体类,并使用 Hibernate 的注解或 XML 文件描述类与数据库表之间的映射关系。 3. **示例代码**: - 给定的示例代码中,可以看到 `SchemaExport` 类的使用方式。 #### 三、核心代码...

    HIBERNATE doc_document_官方文档_4.3.6_final_2014_8

    - **配置Hibernate**: 提供了配置Hibernate的指导,包括程序化配置、获取SessionFactory、JDBC连接、可选配置属性(如SQL方言、外连接抓取、二进制流、二级和查询缓存、查询语言替换、Hibernate统计信息)。...

    hibernate使用参考文档

    在使用 Hibernate 之前,需要将相关的 JAR 包导入到项目中。这些 JAR 包位于 `hibernate-release-4.2.5.Final\lib\required` 目录下,包括 `hibernate-core-4.2.5.Final.jar`、`hibernate-jpa-2.0-api-1.0.1.Final....

    hibernate开发包

    - **对象关系映射 (ORM)**:ORM 是 Hibernate 的基础,它将数据库中的表映射为 Java 类,将表记录映射为 Java 对象,从而实现了数据库操作的对象化。 - **Entity(实体)**: 在 Hibernate 中,实体是数据库表的 ...

    Hibernate 中文开发者文档

    Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据库事务。这篇中文开发者文档将深入讲解Hibernate的核心概念、配置、实体映射、查询语言...

    Hibernate面试题专栏 - 最全的Hibernate面试题, Hibernate笔试题, Hibernate问题

    【标题】与【描述】提及的是“Hibernate面试题专栏”,主要涵盖了全面的Hibernate面试题、笔试题以及相关问题,这表明我们将要讨论的是Java领域中著名的对象关系映射框架——Hibernate的相关知识。Hibernate是一个...

    hibernate-src.zip

    《深入剖析Hibernate源码》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了...同时,通过阅读源码,还可以帮助我们更好地定位和解决在使用Hibernate过程中遇到的问题,实现更高效的开发。

    Hibernate学习.pdf

    - **属性与字段**: 持久类中的属性代表数据库表中的字段。 - **构造器**: 必须提供一个无参数的构造方法,以便Hibernate通过反射机制实例化该类的对象。 - **getter和setter方法**: 为每个属性提供getter和setter...

    hibernate-distribution中文帮助手册

    Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许Java开发者在数据库操作中使用面向对象的方式,极大地简化了数据库编程。 描述中的"来自:...

    Hibernate(ppt)

    它将Java对象与数据库中的记录进行映射,使得开发者可以以对象的方式操作数据,避免了直接编写SQL语句的繁琐。Hibernate支持多种数据库,如MySQL、Oracle、PostgreSQL等。 **2. Hibernate核心组件** - **Entity...

    hibernate4全套jar

    Hibernate 4 是一款广泛应用的Java持久化框架,它简化了数据库与...总之,"hibernate4全套jar"提供了完整Hibernate 4框架所需的所有依赖,让开发者能够在项目中快速集成和使用Hibernate,实现高效、灵活的数据库操作。

    hibernate5所需jar包

    8. **slf4j-api**: 一个简单日志门面,Hibernate使用它来抽象日志记录的实现。 9. **mysql-connector-java**: 或其他数据库驱动,用于连接到特定的数据库管理系统。 **依赖管理** 在实际项目中,这些JAR文件通常...

Global site tag (gtag.js) - Google Analytics