前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Integer.intValue_计数函数count怎么用

Integer.intValue_计数函数count怎么用

作者头像
全栈程序员站长
发布2022-09-27 09:54:33
3020
发布2022-09-27 09:54:33
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/187748.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 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();
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档