String hql = ".....";
int count=((Number)hibernateSession.createQuery(hql).setLong(0, 2).setString(1, credentials.getUsername()).iterate().next()).intValue();
/**
* @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();
声明:此博客从http://fengzhiyin.iteye.com/blog/376631转载过来的
分享到:
相关推荐
此外,还提供了对Eclipse Web Tools Platform (WTP)的支持,这意味着如果你正在使用Eclipse WTP进行Web应用开发,Hibernate Tools也可以完美地集成到你的开发环境中。 - **Usage of Eclipse WTP**:Eclipse WTP为...
【hibernate Tools】是Java开发中用于简化Hibernate框架使用的工具集,它为Eclipse提供了对Hibernate项目的集成支持。在本文中,我们将详细介绍如何安装和使用hibernate Tools,以便在开发过程中更高效地处理...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作与业务对象进行松耦合,使得在Java应用中处理SQL和关系数据库变得更加便捷。在Java开发中,Hibernate扮演着至关重要的角色,它通过...
在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **Native SQL** 本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、...
Hibernate是一种开源的ORM框架,它允许开发者将Java类映射到数据库表,将Java对象映射到数据库记录。这样,我们可以通过操作Java对象来完成对数据库的操作,避免了直接编写SQL语句的繁琐工作,提高了开发效率。 2....
它将数据库表映射为Java类,表中的行映射为类的实例,实现了对象与数据库记录之间的透明转换。 2. **版本5.2.8** Hibernate 5.2.8是该框架的一个稳定版本,修复了一些已知问题,增强了性能,并提供了对最新Java...
2. **定义关联**:在实体类中使用 @ManyToOne, @OneToOne, @OneToMany 或 @ManyToMany 等注解定义表之间的关联关系。 3. **创建 SessionFactory**:配置 Hibernate 的属性,如数据库连接信息,生成 SessionFactory ...
- **实体类**:定义 Java 实体类,并使用 Hibernate 的注解或 XML 文件描述类与数据库表之间的映射关系。 3. **示例代码**: - 给定的示例代码中,可以看到 `SchemaExport` 类的使用方式。 #### 三、核心代码...
- **配置Hibernate**: 提供了配置Hibernate的指导,包括程序化配置、获取SessionFactory、JDBC连接、可选配置属性(如SQL方言、外连接抓取、二进制流、二级和查询缓存、查询语言替换、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....
- **对象关系映射 (ORM)**:ORM 是 Hibernate 的基础,它将数据库中的表映射为 Java 类,将表记录映射为 Java 对象,从而实现了数据库操作的对象化。 - **Entity(实体)**: 在 Hibernate 中,实体是数据库表的 ...
Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据库事务。这篇中文开发者文档将深入讲解Hibernate的核心概念、配置、实体映射、查询语言...
【标题】与【描述】提及的是“Hibernate面试题专栏”,主要涵盖了全面的Hibernate面试题、笔试题以及相关问题,这表明我们将要讨论的是Java领域中著名的对象关系映射框架——Hibernate的相关知识。Hibernate是一个...
《深入剖析Hibernate源码》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了...同时,通过阅读源码,还可以帮助我们更好地定位和解决在使用Hibernate过程中遇到的问题,实现更高效的开发。
- **属性与字段**: 持久类中的属性代表数据库表中的字段。 - **构造器**: 必须提供一个无参数的构造方法,以便Hibernate通过反射机制实例化该类的对象。 - **getter和setter方法**: 为每个属性提供getter和setter...
Hibernate是一个流行的开源对象关系映射(ORM)工具,它允许Java开发者在数据库操作中使用面向对象的方式,极大地简化了数据库编程。 描述中的"来自:...
它将Java对象与数据库中的记录进行映射,使得开发者可以以对象的方式操作数据,避免了直接编写SQL语句的繁琐。Hibernate支持多种数据库,如MySQL、Oracle、PostgreSQL等。 **2. Hibernate核心组件** - **Entity...
Hibernate 4 是一款广泛应用的Java持久化框架,它简化了数据库与...总之,"hibernate4全套jar"提供了完整Hibernate 4框架所需的所有依赖,让开发者能够在项目中快速集成和使用Hibernate,实现高效、灵活的数据库操作。
8. **slf4j-api**: 一个简单日志门面,Hibernate使用它来抽象日志记录的实现。 9. **mysql-connector-java**: 或其他数据库驱动,用于连接到特定的数据库管理系统。 **依赖管理** 在实际项目中,这些JAR文件通常...