hibernate使用过程中,想要自定义sql查询,自然而然得使用session.createSQLQuery(sql),但是查询的返回结果在取值时,总是会出现异常,抛出类似于:

java.math.BigDecimal cannot be cast to java.lang.Int

java.math.BigDecimal cannot be cast to java.lang.String等错误

因为hibernate是面向对象的sql查询,这种原生sql在返回结果前需要制定列的类型。网上好多都是用addScalar("列名",Hibernate.INTEGER)来制定列的类型,但是第二个参数类型在我的环境下无法识别,可能是我用hibernate版本有问题,更可能是差相关依赖的包吧,总之,该方法没成功。

最后使用StandardBasicTypes.INTEGER来指定类型就可以了

 public static int everyNumberHistroySum(int num) {String sql = "SELECT A.N1+B.N2+C.N3+D.N4+E.N5 TOTAL FROM \r\n" + "(SELECT COUNT(1) N1 FROM HOMIE_ARRAY5_V WHERE ONE =?0 )A,\r\n" + "(SELECT COUNT(1) N2 FROM HOMIE_ARRAY5_V WHERE TWO =?1 )B,\r\n" + "(SELECT COUNT(1) N3 FROM HOMIE_ARRAY5_V WHERE THREE =?2 )C,\r\n" + "(SELECT COUNT(1) N4 FROM HOMIE_ARRAY5_V WHERE FOUR =?3 )D,\r\n" + "(SELECT COUNT(1) N5 FROM HOMIE_ARRAY5_V WHERE FIVE =?4 )E";Session session = SessionUtil.getSession();NativeQuery<?> query = session.createSQLQuery(sql);query.setParameter(0, num);query.setParameter(1, num);query.setParameter(2, num);query.setParameter(3, num);query.setParameter(4, num);query.addScalar("TOTAL",StandardBasicTypes.INTEGER);List<?> list = query.getResultList();int sum = (int) list.get(0);SessionUtil.closeSession(session);return sum;}

另外:getResultList的返回是一个List(Object[]),但是当如果返回只有一个,比如1或2是,类型就变成了该数据库字段所对应的类型,在我这里就是BigDecimal。

Hibernate原生sqlquery报错:java.math.BigDecimal cannot be cast to java.lang.Int相关推荐

  1. Java报错:java.math.BigDecimal cannot be cast to java.lang.String

    从数据库取数字,转为string,报错: java.math.BigDecimal cannot be cast to java.lang.String 错误代码 Integer.parseInt(( ...

  2. java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer

    java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer 1.改sql select ...

  3. java.math.BigDecimal cannot be cast to java.lang.Integer

    问题描述:利用sql语句从数据库里面取出数据后,对取出的数据进行数据转换时,出现了java.math.BigDecimal cannot be cast to java.lang.Integer错误, ...

  4. 处理BigDecimal字段, java.math.BigDecimal cannot be cast to [Ljava.lang.Object;

    有时候写视图,里面有用到临时字段的.取出来后该字段类型为BigDecimal类型的.需要转换 我的 scoreindex为临时字段,下面这个sql语句在库里执行是没有错的.但在程序里会出错. Stri ...

  5. java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String

    这个问题是,类型转换出错,为什么呢? 因为BigDecimal不能强制转换成 String类型,要用toString()转换.

  6. [记录]java.math.biginteger cannot be cast to java.lang.long

    可以直接使用BigInteger类型进行接收, BigInteger id = (BigInteger)QueryRunner(conn,"SELECT LAST_INSERT_ID&quo ...

  7. mysql连接报java.math.BigInteger cannot be cast to java.lang.Long异常

    mysql连接报java.math.BigInteger cannot be cast to java.lang.Long异常 参考文章: (1)mysql连接报java.math.BigIntege ...

  8. mysql biginteger java_java.math.BigInteger cannot be cast to java.lang.Integer以及mysql升级的问题...

    java.math.BigInteger cannot be cast to java.lang.Integer以及mysql升级的问题 Mysql 8.0 原因是mysql升级到8.0,数据库驱动使 ...

  9. Type mismatch Can‘t assign java.math.BigDecimal to java.lang.Double

    在数据库中通过 sum 查询出来的数值,进行赋值时会进行报错 MyBatis 的 XML 文件类似这样 select sum(xxx) as xxx, sum(yyy) as yyy from ttt ...

最新文章

  1. memcached java 多线程_springboot使用memcache缓存
  2. 关于移动端 触摸事件导致子元素不能绑定事件
  3. VGA、DVI、HDMI区别
  4. 系统地址和服务器地址不一致,在打开远程通服务配置程序时检测系统配置时提示配置失败,映射的ip地址与服务器不一致。...
  5. .Net中应用XML动态生成窗体
  6. C#网络编程----(二)启动、停止和观察进程
  7. 文字处理技术:空格压缩
  8. 光波函数和薛定谔方程
  9. 【C++】在线IDE
  10. ElementUI ===> 表单 rules 规则
  11. À¸´£º¹²ÏíÖйúÐÅÏ¢²úÒµ´øÀ´µÄÓ°ÏìÁ¦
  12. Python 爬虫 之 爬取古代的诗歌,并保存本地(这里以爬取李白的所有诗歌为例)(以备作为AI写诗的训练数据)
  13. 如何高效的上传大文件?
  14. 浏览器控制台 console 保存输出文件
  15. 计算机教案解说词,导游词讲解教案
  16. 移动互联网繁荣本质是什么
  17. 抖音短视频开发项目跨入社交圈,头条实现社交梦?...
  18. html中3d哪个方向是x轴,浅谈css 3d与空间坐标轴
  19. 【转载于腾讯大讲堂】如何进行字体结构设计
  20. golang中的图像image处理之马赛克效果

热门文章

  1. 用于检测浏览器语言偏好的JavaScript
  2. 如何在'纯'Swift中创建弱协议引用(不带@objc)
  3. win11虚拟内存怎么修改 Windows11修改虚拟内存的步骤方法
  4. python linux教程_Linux for Python教程01
  5. c 语言 循环判断语句,C值循环语句(七)
  6. 麦克纳姆轮全向移动机器人速度分解
  7. php网上商城拟解决的问题是,上次说的软件商城BUG,已找到问题,并解决~
  8. XElement.Load 需要释放吗_因为信用卡逾期还不上坐牢了,刑满释放后,还需要继续还钱吗?...
  9. 天梯—奇偶分家(C语言)
  10. DataGridView:根据条件改变单元格的颜色