大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
Java代码
//int count = ((Integer)query.uniqueResult()).intValue();
//改成
int count = ((Number)query.uniqueResult()).intValue();
Java代码
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也提供了一个与原来兼容的解决方案:
Java代码
Configuration classicCfg = new Configuration();
classicCfg.addSqlFunction( “count”, new ClassicCountFunction());
classicCfg.addSqlFunction( “avg”, new ClassicAvgFunction());
classicCfg.addSqlFunction( “sum”, new ClassicSumFunction());
SessionFactory classicSf = classicCfg.buildSessionFactory();
或
Java代码
//int count = ((Integer)query.uniqueResult()).intValue();
//改成
int count = ((Number)query.uniqueResult()).intValue();
//这样就可以两个版本同时兼容.
Java代码
//参考代码
//第一种方法:
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();
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187748.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...