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

    hibernate查询结果条数集

    原写法:

    Integer count =  (Integer )session.createQuery(hql).uniqueResult();

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

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

  • 相关阅读:
    C语言第三次博客作业单层循环结构
    C语言字符数组
    C语言第一次作业
    C语言作业函数
    C语言嵌套循环
    C语言第二次作业分支结构
    C语言作业数组
    1712新生素拓活动总结
    C语言第0次作业
    C语言作业数据类型
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/6604415.html
Copyright © 2011-2022 走看看