Hibernate原生sqlquery报错:java.math.BigDecimal cannot be cast to java.lang.Int
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相关推荐
- Java报错:java.math.BigDecimal cannot be cast to java.lang.String
从数据库取数字,转为string,报错: java.math.BigDecimal cannot be cast to java.lang.String 错误代码 Integer.parseInt(( ...
- 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 ...
- java.math.BigDecimal cannot be cast to java.lang.Integer
问题描述:利用sql语句从数据库里面取出数据后,对取出的数据进行数据转换时,出现了java.math.BigDecimal cannot be cast to java.lang.Integer错误, ...
- 处理BigDecimal字段, java.math.BigDecimal cannot be cast to [Ljava.lang.Object;
有时候写视图,里面有用到临时字段的.取出来后该字段类型为BigDecimal类型的.需要转换 我的 scoreindex为临时字段,下面这个sql语句在库里执行是没有错的.但在程序里会出错. Stri ...
- java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
这个问题是,类型转换出错,为什么呢? 因为BigDecimal不能强制转换成 String类型,要用toString()转换.
- [记录]java.math.biginteger cannot be cast to java.lang.long
可以直接使用BigInteger类型进行接收, BigInteger id = (BigInteger)QueryRunner(conn,"SELECT LAST_INSERT_ID&quo ...
- 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 ...
- 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,数据库驱动使 ...
- 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 ...
最新文章
- memcached java 多线程_springboot使用memcache缓存
- 关于移动端 触摸事件导致子元素不能绑定事件
- VGA、DVI、HDMI区别
- 系统地址和服务器地址不一致,在打开远程通服务配置程序时检测系统配置时提示配置失败,映射的ip地址与服务器不一致。...
- .Net中应用XML动态生成窗体
- C#网络编程----(二)启动、停止和观察进程
- 文字处理技术:空格压缩
- 光波函数和薛定谔方程
- 【C++】在线IDE
- ElementUI ===> 表单 rules 规则
- À¸´£º¹²ÏíÖйúÐÅÏ¢²úÒµ´øÀ´µÄÓ°ÏìÁ¦
- Python 爬虫 之 爬取古代的诗歌,并保存本地(这里以爬取李白的所有诗歌为例)(以备作为AI写诗的训练数据)
- 如何高效的上传大文件?
- 浏览器控制台 console 保存输出文件
- 计算机教案解说词,导游词讲解教案
- 移动互联网繁荣本质是什么
- 抖音短视频开发项目跨入社交圈,头条实现社交梦?...
- html中3d哪个方向是x轴,浅谈css 3d与空间坐标轴
- 【转载于腾讯大讲堂】如何进行字体结构设计
- golang中的图像image处理之马赛克效果
热门文章
- 用于检测浏览器语言偏好的JavaScript
- 如何在'纯'Swift中创建弱协议引用(不带@objc)
- win11虚拟内存怎么修改 Windows11修改虚拟内存的步骤方法
- python linux教程_Linux for Python教程01
- c 语言 循环判断语句,C值循环语句(七)
- 麦克纳姆轮全向移动机器人速度分解
- php网上商城拟解决的问题是,上次说的软件商城BUG,已找到问题,并解决~
- XElement.Load 需要释放吗_因为信用卡逾期还不上坐牢了,刑满释放后,还需要继续还钱吗?...
- 天梯—奇偶分家(C语言)
- DataGridView:根据条件改变单元格的颜色