HTTP Status 500 - java.lang.Long cannot be cast to java.lang.Integer

本文探讨了在使用Hibernate进行HQL查询时,遇到java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer的问题。通过分析错误源代码,提供了两种修正方法:一种是将查询结果类型从Integer更改为Long,另一种是使用Number作为通用类型。同时解释了为何这些修改能够解决问题。
Hibernate HQL 语句查询时,有时候会遇到这个问题:java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer

这里写图片描述


根据定位:找到出错的 代码位置

通过调用 allCount 方法,查询出,fw 信息的总数量。

        String hql1 = "select count(fw) from TblFwxx as fw where fw.tblUser.uid="+tbuser.getUid();
        count = tbifw.allCount(hql1);

allCount(String hql) 方法为:

    public Integer allCount(String hql){
        Session session = HibernateUtil.getSession();
        /*--------出错语句-------*/
        Integer count = (Integer) session.createQuery(hql).uniqueResult();

        session.close();
        return count;
    }
出错语句是:
        Integer count = (Integer) session.createQuery(hql).uniqueResult();

1、可以这样改:
        Long count = (Long) session.createQuery(hql).uniqueResult();

        session.close();
        return count.intValue();

2、也可以这样改:
        Number count = (Number) session.createQuery(hql).uniqueResult();
        //因为 Number 是 Long 和 Integer 的父类
        session.close();
        return count.intValue();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值