CopyBeanUtils坑,类型转化错误

  • 问题来源:
    • 描述: 今天后台使用自建的beanUtils进行属性拷贝时发生了坑。
  • 解决:
    • 解决方法

问题来源:

描述: 今天后台使用自建的beanUtils进行属性拷贝时发生了坑。

业务代码如下

     //查询业务代码List<PageInfoDto> pageInfoDtoList = new ArrayList<>();pageInfoDtoList = pageInfoRepository.findByCardIdAndDeleted(cardId,AlIVE);List<PageInfoEntity> pageInfoEntityList = new ArrayList<>();//DTO转义业务实体pageInfoEntityList =CopyBeanUtils.copyList(pageInfoDtoList);//特殊处理,发生报错了for(PageInfoEntity pageInfoEntity : pageInfoEntityList) {System.out.println("输出测试");}

错误

java.lang.ClassCastException:  xxxDto cannot be cast to xxxEntity

这怕不是傻了。我的代码里可没有这种传化,排查下工具类

    public static <T> List copyList(List<T> list) {if (CollectionUtils.isEmpty(list)) {return new ArrayList();}return JSON.parseArray(JSON.toJSONString(list), list.get(0).getClass());}

debug后发现正常返回,但当进行for循环时报错了

解决:

步骤
1.怀疑是使用泛型后的泛型擦除问题
但是报错已经明确指明是两个具体的类型转换错误
2.仔细研究了下工具类
问题代码如下

  return JSON.parseArray(JSON.toJSONString(list), list.get(0).getClass());

之前的大哥写的逻辑问题,Json.parseArray 中 list.get(0).getClass() 获取的实体类为传入的Dto,
而在service层实际上
List pageInfoEntityList 的类加载器已经变为 List pageInfoEntityList
了,所以 遍历时出错,而转换时未出错则是因为所谓的泛型擦除。工作类中的自动擦除了List中的PageInfoEntity类型

解决方法

copyBeanUtils时,指定转换的类型

    public static <T> List copyList(List<T> list, Class clazz) {if (CollectionUtils.isEmpty(list)) {return new ArrayList();}System.out.println(clazz);return JSON.parseArray(JSON.toJSONString(list), clazz);}

调用如下

        List<PageInfoEntity> pageInfoEntityList = new ArrayList<>();pageInfoEntityList =CopyBeanUtils.copyList(pageInfoDtoList,PageInfoEntity.class);

采坑不用,以后得注意点了

我是和弦,一名最近回归5线城市的互联网枸杞人。

文章对您有帮助的话,烦请点个赞。

CopyBeanUtils坑,xxDto cannot be cast to xxxEntity 类型转化错误相关推荐

  1. SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引(转载)

    很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 ....... 今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可 ...

  2. Nacos小坑——启动异常以及正常启动后账号密码错误问题解决

    Nacos小坑--启动异常以及正常启动后账号密码错误问题解决 前言: 最近在学习SpringCloud alibaba,启动nacos时遇到如下问题: 1.正常解压压缩文件后,在bin目录下直接双击s ...

  3. 全网详细解决java.lang.ClassCastException: xxx类型 cannot be cast to xxx类型

    文章目录 1. 文章引言 2. 复现错误 3. 分析错误 4. 解决错误 5. 文章结论 1. 文章引言 xxx类型可以为如下类型: 我们自定义的类: Student类 Project类 Person ...

  4. 使用pagehelper踩的坑PageHelper cannot be cast

    java.lang.ClassCastException: com.github.pagehelper.PageHelper cannot be cast 出现这个的问题在于配置的问题.4.2版本前的 ...

  5. mysql format函数对数字类型转化的坑

    原值param = 1234.5678 format(param, 2) (不建议)      结果,字符串类型,123,4.57  会导致你图表char 生成失败,直接变0 convert(para ...

  6. 填坑记1-nrf52840出现error flash download failed -cortex-M4错误的解决办法-清风电子开发板

    填坑类型: nrf52840出现error flash download failed -cortex-M4错误 使用板子:清风电子开发板 问题描述: keil4出错,keil5不出错(意思是其他ke ...

  7. Hive函数05_细说CAST函数(数据类型转化)

    一.Hive的隐式转换 Hive内置数据类型由基本数据类型和复杂数据类型组成,基础类型例如下图所示的几种 今天的话题是研究Hive数据类型之间的转换.hive同java一样,也包括隐式转换(impli ...

  8. Java后台接收参数出现java.lang.Integer cannot be cast to java.lang.Double错误(已解决)

    在Java接受前端传过来的数据信息的时候,使用List<List< double>>进行接收结果出现这个错误 java.lang.Integer cannot be cast ...

  9. 别让数据坑了你!用置信学习找出错误标注(附开源实现)

    星标/置顶小屋,带你解锁 最萌最前沿的NLP.搜索与推荐技术 文 | JayLou娄杰(NLP算法工程师,信息抽取方向) 编 |  北大小才女小轶 美 | Sonata 1 前言 在实际工作中,你是否 ...

  10. python动态类型的坑_在Python中避免动态类型错误的策略是什么(NoneType没有属性x)?...

    forgetting to check a type 这没什么意义.你很少需要"检查"一个类型.你只需运行单元测试,如果你提供了错误的类型对象,事情就会失败.根据我的经验,你不需要 ...

最新文章

  1. javascript requestAnimationFrame 解决 setTimeout、setInterval 时间不准的方法。
  2. OpenCV之mixChannels()函数使用说明
  3. 训练技巧 | 功守道:NLP中的对抗训练 + PyTorch实现
  4. 在xcode上把你的app多语言国际化(NSLocalizedString)
  5. 学习笔记(50):Python实战编程-Frame
  6. String Problem(HDU-3374)
  7. python基础27 -----python进程终结篇-----IO模型
  8. 利用T-SQL动态定义重复SQL Server数据库表行
  9. linux usr目录权限不够,【ARM-Linux开发】Ubuntu下的/usr目录权限,导致不能使用sudo命令的修复...
  10. linux装软raid,LINUX中软RAID的实现方案
  11. 孪生网络图像相似度_孪生网络(Siamese Network)
  12. tlwn823n无线网卡驱动 linux,centos 6.5安装 TP-link TL-wn823n驱动
  13. 上位机软件工程师_自动化项目如何做?PLC工程师教你几招!
  14. 隐马尔可夫链模型学习总结
  15. java代码区出现红色,绿色怎么办
  16. 微信公众号推广的40个有效果的方法
  17. 使用计算机有关的活动,有关计算机的活动策划书
  18. C++ endian转换
  19. c语言void delay是什么意思,delay什么意思
  20. 百度地图使用,以及一些api

热门文章

  1. python3安装教程
  2. Java面试题内容聚合
  3. 使用socks5将游戏的服务器连接通过本地SS服务器代理连接到加速服务器,实现游戏加速。
  4. opera档案学习(二)
  5. excel导入sqlsever
  6. Jmeter安装及使用教程
  7. 网站/APP 流量分析、用户访问分析
  8. 思维导图的了解和使用
  9. PyQt5+爬虫打造磁力链接搜索工具
  10. 600个公司企业产品发布展示PPT模板免费下载网站