当前位置: 代码迷 >> Java Web开发 >> Hibernate中java.lang.String cannot be cast to java.lang.Integer解决方法
  详细解决方案

Hibernate中java.lang.String cannot be cast to java.lang.Integer解决方法

热度:826   发布时间:2016-04-16 21:40:28.0
Hibernate中java.lang.String cannot be cast to java.lang.Integer

这个是查询源码!
实体配置中对应的类型也没有问题,但是执行就会报这个错误!
问题是我自己开发的机器上运行没有问题,但一放到服务器上,就会出现这个问题!
求大神指教!在线急等!
------解决思路----------------------
是不是jdk版本不一样
------解决思路----------------------
会不会是数据源的问题,把出错的数据拿到本地试一下
------解决思路----------------------
报错:java.lang.Long cannot be cast to java.lang.Integer 
  Long 无法转化成Integer类型. 
  这个异常 经常出现在hinbernate分页查询的时候. 

原因: 

        这里在Hibernate2.0之前版本list.get(0)返回的是Integer类型. 
        但是在Hibernate3.0以后版本list.get(0)返回的是Long类型. 
        所以在这里不可以由Long型强转成Integer类型. 
   
Integer属于不可更改类型,而且Long和Integer没有任何继承关系,当然不能这样转换。    

  例如: 
           注: super.pageQuery(hql,null,null,null);调用了一个父类的一个封装方法.查询时候使用 
           List list = this.getHibernateTemplate().executeFind(new HibernateCallback(){}); 

------解决思路----------------------
在将String类型强制转换成Integer时 语法没错,但是在编译的时候我们会错。。。就会报java.lang.String cannot be cast to java.lang.Integer
从文字而言可以看出是  String不能转换成Integer类型
那么就用valueof
  相关解决方案