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

被折叠的 条评论
为什么被折叠?



