数据库中取出BigInt转Long出现异常
@Query(value = "select id from b ", nativeQuery = true)
List<Long> ids();
在某些业务逻辑中,可能只需要筛选出需要的某一列数据即可,使用 List
去接 查询出来的单列结果。
for(Long id:xxx)
使用forEach去遍历时,Long id 出现BigInt转Long错误提示。
取出来的数据只能用下标 i 去遍历个数,但是有需求把数据取出来时,
又出现了 bigInt转Long出现错误。
废话不多说:直接上解决方案。
最后采用的解决方法是使用List<Object[]>去接多列结果
再使用Java8新特性 Stream流 去取出第一列的数据,再转化为Long集合
List<Long> xxxList = xxx.stream()
.map(i -> Long.valueOf(i[0].toString())).collect(Collectors.toList());
解释一下上面的代码:xxx中填的是取出来的List<Object[]>集合的变量名,把它转成stream流,利用map对Stream中包含的元素使用给定的转换函数进行转换操作i[0]指的是第一列,i[1]指的是第二列以此类推,再使用collect进行聚合为List集合。
上面的有时候会转型失败:
这个可以解决:
@Query(value = "select id from information",nativeQuery = true)
List<BigInteger> query();
List<Long> longList = customerContactInformationRepository.query().stream().map(BigInteger::longValue).collect(toList());
中间也想使用包装类型转换都没有成功,可能是实力限制 ,希望还有此类问题解决方法的童鞋 多多留言,共勉