关于数据库取出的BigInt无法转化为Long的问题及解决方法

数据库中取出BigInt转Long出现异常

数据库中的字段类型
数据库中的表数据

@Query(value = "select id from b ", nativeQuery = true)
  List ids();

在某些业务逻辑中,可能只需要筛选出需要的某一列数据即可,使用 List
去接 查询出来的单列结果。

for(Long id:xxx)
使用forEach去遍历时,Long id 出现BigInt转Long错误提示。

取出来的数据只能用下标 i 去遍历个数,但是有需求把数据取出来时,
又出现了 bigInt转Long出现错误。

废话不多说:直接上解决方案。

最后采用的解决方法是使用List去接多列结果

再使用Java8新特性 Stream流 去取出第一列的数据,再转化为Long集合

      List xxxList = xxx.stream()
      .map(i -> Long.valueOf(i[0].toString())).collect(Collectors.toList());

解释一下上面的代码:xxx中填的是取出来的List集合的变量名,把它转成stream流,利用map对Stream中包含的元素使用给定的转换函数进行转换操作i[0]指的是第一列,i[1]指的是第二列以此类推,再使用collect进行聚合为List集合。

上面的有时候会转型失败:
这个可以解决:

   @Query(value = "select id from information",nativeQuery = true)
   List  query();

   List longList =     customerContactInformationRepository.query().stream().map(BigInteger::longValue).collect(toList());

中间也想使用包装类型转换都没有成功,可能是实力限制 ,希望还有此类问题解决方法的童鞋 多多留言,共勉

你可能感兴趣的:(项目遇到的问题总结,mysql,java,hibernate)