zoukankan      html  css  js  c++  java
  • java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer

    原因:

    从Hibernate 3.0.x/3.1.x升级到最新的3.2版之后,3.2版的很多sql函数如count(), sum()的唯一返回值已经从Integer变为Long,如果不升级代码,会得到一个ClassCastException。 
    这个变化主要是为了兼容JPA,可以在hibernate.org的最新文档中找到说明。

    解决方案:

    1.hibernate尤其解决方案。当使用hibernate的查询函数count(),sum()等的值时(注意:一定是只返回唯一值的并且为数字格式是才可以)可已调用query的uniqueResult();方法  此方法返回Object对象,只需要把它转为Number类型,然后调用.intValue()即可。

    例如:Integer count=((Number)(session.createQuery(hql)).uniqueResult()).intValue();

    2.可以将long转为字符串,然后将字符串再转为integer;

    Long i = (Long) session.createQuery(hql).uniqueResult();

    Integer ii= new Integer(String.valueOf(i));

    OK,这两种方案即可解决此类问题~

  • 相关阅读:
    HDU 1496 Equations
    HDU 1060 Leftmost Digit
    HDU 1391 Number Steps
    HDU 1212 Big Number
    HDU 1491 Octorber 21st
    HDU 1339 A Simple Task
    HDU 2710 Max Factor
    HDU 1176 免费馅饼
    FORTH基本堆栈操作
    FORTH 安装使用
  • 原文地址:https://www.cnblogs.com/tian114527375/p/4962234.html
Copyright © 2011-2022 走看看