`
jimmy9495
  • 浏览: 300637 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

报错java.lang.Long cannot be cast to java.lang.Integer解析

阅读更多
用博客记录工作中出现的问题,给自己一个提醒,也给其他朋友一些借鉴。


报错: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(){});

  /**
   * 查询所有用户记录总数
   */
   public Integer getUsersCount() {
  String hql = "select count(*) from Users";
  List list = super.pageQuery(hql, null, null, null);
  return (Integer) list.get(0);
   }

             

解决办法:
public Integer getUsersCount() {
  String hql = "select count(*) from Users";
  List list = super.pageQuery(hql, null, null, null);
  Number num = (Number) list.get(0);
  return num.intValue();
  }
         注:java.lang.Number是Integer,Long的父类.

6
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics