我有一个由数据库查询(Hibernate)填充的List ids。数据库 是PSQL。 ids列是bigint类型。 现在填充了ids列表,没有像这样的任何异常
List<Long> ids = getIds();//getIds returns List<Long>
但是当我尝试通过
遍历id列表中的项目时 for (Long id : ids)
我得到了例外
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
值为206131954.我不知道为什么它可以将值添加到列表中,但稍后在尝试浏览列表时出现错误。
public List<Long> getIds() {
List<Long> externalIds = new ArrayList<Long>();
List<Person> persons = repository.getPeople();
for (Person person : persons) {
List<Long> ids = repository.getIdentifications(person);
if (ids.size() > 0) {
externalIds.addAll(ids);
}
}
return externalIds;
}
public List<Long> getIdentifications() {
String q = "select person_id from relevantpeople";
Query query = entityManager.createNativeQuery(q);
return (List<Long>) query.getResultList();
}
答案 0 :(得分:0)
使用List<BigInteger>
代替List<Long>
BigInteger能够保存比Long更大的整数。
BigInteger持有(2 ^ 32)^ Integer.MAX_VALUE;
长期持有(2 ^ 63)-1;