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

ITgo 发布于 2011/08/19 15:46
阅读 4K+
收藏 0
 List<Integer> list = this.getHibernateTemplate().find(hql);
	   Integer size = 0;
	   if(list!=null||list.isEmpty()){
		   System.out.println(list.get(0));
		   size=(Integer)list.get(0);
	   }

结果报错java.lang.Long cannot be cast to java.lang.Integer

事实上list.get(0)结果只有19条记录....

以下是问题补充:

@ITgo: List<Integer> list = this.getHibernateTemplate().find(hql); Integer size = 0; if(list!=null||list.isEmpty()){ System.out.println(list.get(0)); size=Integer.parseInt(list.get(0).toString()); } 我改成这样都还是报同样的错误! (2011/08/19 15:58)
加载中
0
红薯
红薯
用Number类吧
张攀
张攀
突然发现老大换头像了....
0
ITgo
ITgo

求解释~

0
景德真人
景德真人
听红薯的话就对了
0
酱油他哥
酱油他哥
List<Integer> list = this.getHibernateTemplate().find(hql);
Integer size = 0;
if(list != null || list.isEmpty()) {
    Systemout.println(list.get(0));
    size = Integer.parseInt(String.valueOf(list.get(0)));
}
改成这样试试,个人建议!
0
酱油他哥
酱油他哥
别的地方都是照你写的,只是把“list.get(0).toString()”改成“ String.valueOf(list.get(0))”。
0
Turbidsoul
Turbidsoul
类型转换发生在list.get(0)这句上,事实上在你查询得到list的时候并不做类型转换,只有在从list中取出的时候才进行类型转换
0
Turbidsoul
Turbidsoul
其实这个问题可以通过反编译class文件得到答案的
0
ajavaloser
ajavaloser

size=(int)list.get();
前提是没有溢出,你为什么要定义list<Integer>呢,直接定义List<long> 不就行了

0
ITgo
ITgo

引用来自“wf_chn”的答案

size=(int)list.get();
前提是没有溢出,你为什么要定义list<Integer>呢,直接定义List<long> 不就行了

这里的确是个失误的地方,经过验证HQL COUNT函数的返回值确实是Long型。

不过下面的转换还是会出问题....

只能使用Integer.parseInt()进行处理

0
ITgo
ITgo

引用来自“酱油他哥”的答案

List<Integer> list = this.getHibernateTemplate().find(hql);
Integer size = 0;
if(list != null || list.isEmpty()) {
    Systemout.println(list.get(0));
    size = Integer.parseInt(String.valueOf(list.get(0)));
}
改成这样试试,个人建议!
这种方法是可以的,谢谢你
返回顶部
顶部