文档章节

List(泛型)类型转换陷阱,hibernate 原生查询BigInteger 转 Long 出错问题

yu82694
 yu82694
发布于 2017/02/21 09:35
字数 238
阅读 72
收藏 0

在使用hibernate 调用原生sql 渴望查询出List<Long>类型数据,查询复制没报错,在使用List<Long>时,却报java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long 错误;

原来hq1查询出的Long 类型数据,sql查询出都是BigInteger 类型;

List a = new ArrayList<BigIneteger> ,在a 没用使用类型限定的情况下,可以赋值给任意类型的List,

如List<Long>,而把它当Long类型使用时,会出错

 

@Test
    public void testc(){
         List<Long> LongList = new ArrayList<Long>();
         List bigIntList = new ArrayList<BigInteger>();
         bigIntList.add(new BigInteger("1"));
         LongList = bigIntList;
         for(int i = 0; i < bigIntList.size();i ++ ){
             if( bigIntList.get(i) instanceof Long){
                 System.err.println("is Long type");
             }else{
                 System.err.println("is not Long type");
             }
            
             if( LongList.get(i) instanceof Long){
                 System.err.println("is Long type");
             }else{
                 System.err.println("is not Long type");
             }
            
            
             if( bigIntList.get(i) instanceof BigInteger){
                 System.err.println("is BigInteger type");
             }else{
                 System.err.println("is not BigInteger type");
             }
            
             try{
                 for(Long l : LongList){
                     System.err.println(l);
                 }
             }catch(Throwable t){
                t.printStackTrace();
             }
            
            
         }
    }

 

 

//输出结果

is not Long type
is not Long type
is BigInteger type
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
 

 

© 著作权归作者所有

yu82694
粉丝 1
博文 84
码字总数 6820
作品 0
南宁
私信 提问
诡异的类型转换

一、前言 最近在做应用迁移时候遇到了一个诡异的类型转换问题,感觉比较有意思,就记录下来和大家分享下。 二、问题的产生 原始系统里面有的一个从数据库查询的伪代码如下: image image 由于...

今天你不奋斗明天你就落后
2017/12/01
0
0
解决Hibernate原生SQL映射问题

在问答里和论坛中,经常看到有人问,怎样将使用本地SQL查询出来的结果映射为值对象的问题,这里就Hibernate中提供的方法做个结论。前提,这里没有使用属性的延迟加载技术。 假设有个值对像,...

-wangming-
2015/05/23
44
0
java BigInteger 类

头文件:import java.io.; import java.util.; import java.math.*; 读入: Scanner cin = Scanner (System.in); while(cin.hasNext())//等价于!=EOF n=cin.nextInt();//读入一个int型的数 ......

皮皮大仙
2011/05/08
481
0
Arrays.asList陷阱

代码如下 public static void main(String[] args) { int[] data = {1,2,3,4,5}; List list = Arrays.asList(data); System.out.println("列表中的元素数量是:" + list.size()); } 注意这里......

肥猫钓鱼
2014/03/20
79
0
Java泛型-你可能需要知道这些

本博文为Java泛型扫盲文,争取读完后能理解泛型并使用泛型。 1. 几个知识点 1.1 什么是泛型 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 这种参数类型可以用在类、...

24K男
2018/04/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
17
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部