关于Hibernate3.2的count返回值的问题

 我的代码如下
  @Override
  public int countAllSubject() {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    return ((Long) session.createQuery(
        "select count(*) from Post where idParent=0").iterate().next())
        .intValue();
  }
问题关键在那个
(Long)
在我的机器上运行正常,可在一些网友的机器上运行报错
java.lang.ClassCastException: java.lang.Integer

他们修改成(Integer)则运行正常

我的机器上如果改成Integer,则会报错。
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer


经排查,最终确定:

由于我使用的是Hibernate 3.2版本,经确认,这个版本已经把以前返回 Integer的改成了 Long,
因为JPA里面的返回值规定是Long, Hibernate为了兼容这个,所以修改了返回值。

如果你从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();










<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
OSCP-Algernon(SmarterMail) 从前面的结果中,确实有.NET远程处理在端口17001上运行。因此,此漏洞应适用于目标计算机。下载了漏洞并编辑了以下部分以匹配我的IP并使用本地端口21。端口9998引导到一个SmarterMail的登录页面。设置监听,获得一个反弹shell。端口80重定向到默认IIS页。已经是system权限了。google搜索漏洞。 阅读详情

相关推荐

Python爬虫实战:用BeautifulSoup和Pandas轻松抓取去哪儿网景点数据(附完整代码)

本文详细介绍了如何使用Python的BeautifulSoup和Pandas库构建一个高效的旅游数据爬虫,从去哪儿网抓取景点数据。内容涵盖环境准备、网页结构分析、核心代码实现、反爬策略以及数据清洗与存储,提供完整代码示例,帮助开发者快速掌握数据采集技术。

river的博客 357

hibernate异常之--count查询异常

Lorg/hibernate/Query:hibernate版本问题 转载于:https://www.cnblogs.com/ssjifm/p/7611678.html

weixin_30432579的博客 254

Ubuntu终端一键安装英伟达驱动:无需手动下载的完整指南

本文提供了一份在Ubuntu系统上通过终端命令一键安装英伟达显卡驱动的完整指南。该方法利用官方PPA源,无需手动下载驱动文件,可自动检测硬件并安装最佳版本,极大简化了流程,适合深度学习环境搭建等场景,有效提升安装效率与稳定性。

weixin_29232121的博客 181

hibernate count

最近开始学习和更多的使用hibernate了,yi

liyang_hawk的专栏 914

AD936x Evaluation Software 详细配置

作者:ShownSun 工作室:时沿科技 文章目录AD936x Evaluation Software详细配置1 系统概述2 AD9361 Wireless Transceiver Evaluation Setup2.1 标签描述2.2 用户参数2.3详细配置3 AD936x RF Wizard3.1 标签描述3.2 用户参数3.3 详细配置4 AD936x Digital Filter Wizard4.1 标签描述4.1.1 时钟配置4.1.2 滤波器配置4.1.3 接收滤波器配置4.1.4 发射滤..

ShownSun博客 5195

S32DS3.5图形化配置实战:从零构建S32K144通信接口工程

本文详细介绍了如何使用S32DS3.5图形化配置工具从零构建S32K144通信接口工程。通过实战演示引脚配置、时钟树设置、SPI接口搭建等关键步骤,帮助开发者快速掌握NXP S32K系列开发技巧,提升嵌入式开发效率。特别针对S32DS3.5版本的新特性进行了深度解析,包括智能代码生成和调试优化方法。

weixin_26834815的博客 201

关于hibernate执行select count( *) 出现java.lang.ClassCastException问题

代码如下: public int getTotal(String hql,int span) Session sess = sf.openSession(); //sf是Hibernate的session工厂类,它作为spring的受管bean,由spring负责注入 Query q = sess.createQuery(hql); List list = q.list();

cekong0704的专栏 1357

uni-app蓝牙MTU设置失效探因:从20字节限制到跨设备兼容性实战

本文深入探讨了uni-app蓝牙开发中MTU设置失效的常见问题,特别是20字节限制的成因及解决方案。通过分析设备兼容性、蓝牙协议栈特性和系统版本差异,提供了智能延迟策略、设备特征检测和渐进式MTU提升等实战方案,帮助开发者优化蓝牙数据传输效率。

weixin_29289821的博客 289

hibernate HQL查询count(*)时与join、group by、distinct等连用报错

hibernate分页查询包装工具类时,count(*)和join、group by distinct等连用报错问题解决思路

独行侠梦的博客 3286

MFC+Modbus-Tcp协议实现温湿度传感器采集

本文简单介绍MFC使用-Tcp通信实现系列MODBUSTCP型温湿度传感器采集数据。

zhigang_zhao的博客 2832

2025年最新雷电模拟器9.22安装Magisk面具和LSPosed框架完整图文教程 文章末尾附所需软件下载

操作环境:雷电模拟器9.0.22 虚拟系统版本android 91、设置-其他设置-Root权限-开启2、设置-性能设置-System.vmdk可写入3、安装Magisk-18a0b94a-delta(25205).apk,运行并给予root权限4、选择右上角安装弹出“允许“magisk Delta”访问您设备上的照片、媒体内容和文件吗?“选择允许,然后结束magisk进程。5、从新运行magisk选择右上角安装-选择修补boot镜像中的vbmeta和安装到Recovery。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 7109

hibernate中关于对count(*)的查询

今天做项目中,有个统计在线人数的列子,需要从数据库中拿到状态为1的用户数量,所以开始使用count(*)这个函数,但是初学hibernate,犯了好多错误,特此记录下来。public int showCount() { String hql = "select count(*) from users where loginstatus=1"; int count =

wangdashu605435772的博客 4189

(十五)CX20106A 中超声波测量的应用

(十五)CX20106A 中超声波测量的应用

m0_52555663的博客 4515

Hibernate3.2的count返回值的问题

 我的代码如下 @Override public int getTotal() { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); return ((Long) session.createQuery

只为那一份执着 1503

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

hibernate升级到3.2带来的count、sum等查询的兼容性问题

     今天调试程序,以前好好的hibernate查询,突然开始报ClassCastException,出现的语句都是出现在count查询数据条数的hql语句处,说类型为java.lang.Long。奇怪了啊,以前好好地啊。 上网一查,原来是hibernate从3.1升到3.2带来的兼容性问题。 具体说明:      从Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,3.2版...

239

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,sql函数如count(), sum()的唯一返回值已经从Integer变为Long...

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

海阔天空 222

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Hibernate中的count聚合函数:是Integer还是Long?

最近在上课的时候发现一个问题,其实这个问题很早以前就发现了。不过以前也懒得去理它,最近想想找找原因吧。就是我用HQL查询数据库的时候,sj写如下语句: public int getCount() { Session session = super.getSession(); int count = (Integer) session.createQuery("select count(h

“夜光寒”的博客 461

hibernate java.lang.Long cannot be cast to java.lang.Integer

从Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,3.2版的很多sql函数如count(), sum()的唯一返回值已经从Integer变为Long,如果不升级代码,会得到一个ClassCastException。  这个变化主要是为了兼容JPA,可以在hibernate.org的最新文档中找到说明。 解决方案: 1.hibernate尤其解决方案。当使用hibe

Li_huan_123的专栏 1505

hibernate :java.lang.ClassCastException: java.lang.Long cannot be cast to java.l

原因: 从Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,3.2版的很多sql函数如count(), sum()的唯一返回值已经从Integer变为Long,如果不升级代码,会得到一个ClassCastException。 这个变化主要是为了兼容JPA,可以在hibernate.org的最新文档中找到说明。 解决方案: 1.hibernate尤其解决方案。当使用hibe...

373

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer

原因: 从Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,3.2版的很多sql函数如count(), sum()的唯一返回值已经从Integer变为Long,如果不升级代码,会得到一个ClassCastException。  这个变化主要是为了兼容JPA,可以在hibernate.org的最新文档中找到说明。 解决方案: 1.hibernate尤其解决方案。

漂浮 1万+

关于Hibernate select count(*)返回值为Long还是Integer?

关于Hibernate select count(*)返回值为Long还是Integer? 我这里把代码贴一下:  Java code  @Override public int countAllSubject() { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); sessi

shen332401890的专栏 6602

关于在Hibernate里使用select count(*) 返回值的问题说明

因为JPA里面的返回值规定是Long, Hibernate为了兼容这个,所以修改了返回值。 如果你从Hibernate 3.0.x/3.1.x升级到最新的hibernate,一定要注意,3.2+版的很多sql函数如count(), sum()的唯一返回值已经从Integer变为Long,如果不升级代码,会得到一个ClassCastException。 这个变化主要是为了兼容JPA,可以

LowKeySk的专栏 5170

关于Hibernate查询count时的返回值类型

由于接触Hibernate较晚, 一直坚定不移的相信select count(*) 的返回值的类型的是Long. 一次很偶然的机会发现在一段分页函数里发现在使用select count(*)之后拿到的对象,居然先判断是Long类型还是Integer类型。心中大惊,总不会是在不同的数据库里它的表示不一样吧,不找出原因心难安。 在csdn上看到有人提出类似问题。其中提到 关于在Hibernat

Max Lee的专栏 4890

Hibernate select count(*)返回值类型Integer vs Long

COUNT 返回Long对象 MAX MIN 返回类型是跟所使用的字段类型有关 AVG 返回Double SUM 如使用字段是整形,返回Long(以前是返回BigInteger),如果是浮点类型那么就返回Double.由于接触Hibernate较晚, 一直坚定不移的相信select count() 的返回值的类型的是Long. 一次很偶然的机会发现在一段分页函数里发现在使用select cou

流离岁月的博客 7645

Hibernate使用count(*)取得表中记录总数(跨Hibernate3.x版本问题)

Java代码 /**     * @TODO:查询某一年度的所有计划数量     */   public int findCountByYear(String currYear) {        String hqlString = "select count(*) from WaterPlan as p where p.planYear ='"+currYear+...

乐在其中/Leo在其中 614

Hibernate(select count(*))

关于在Hibernate里使用select count(*) 返回值的问题说明 由于我使用的是Hibernate 3.2版本,经确认,这个版本已经把以前返回 Integer的改成了 Long, 因为JPA里面的返回值规定是Long, Hibernate为了兼容这个,所以修改了返回值。 如果你从Hibernate 3.0.x/3.1.x升级到最新的3.2版,一定要注意,3.2版的很多sql函数如co

Y_Ber的专栏 1951
上一篇: 跟老紫竹学Java-图书销售系统-管理界面:图书,入库,订单查看,历史数据等
下一篇: 塞翁失马又得马,福祸循环,人生如此相似
java2000_test
博客等级 码龄19年 10粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值