遍历使用 Hibernate 查询填充的列表时出现 ClassCastException
ClassCastException when looping through the list populated using Hibernate query
我有一个由数据库查询 (Hibernate) 填充的列表 ID。数据库
是 PSQL。 ids 列是 bigint 类型。
现在 ids 列表被填充,没有任何例外,就像这样
List<Long> ids = getIds();//getIds returns List<Long>
但是当我尝试通过
遍历 ids 列表中的项目时
for (Long id : ids)
我得到异常
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
这个值是206131954,不知道为什么能把这个值加到list里,后来遍历list的时候就报错了。
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();
}
使用List<BigInteger>
代替List<Long>
BigInteger 能够容纳比 Long 更大的整数。
BigInteger holds (2^32)^Integer.MAX_VALUE;
Long holds (2^63)-1;
我有一个由数据库查询 (Hibernate) 填充的列表 ID。数据库 是 PSQL。 ids 列是 bigint 类型。 现在 ids 列表被填充,没有任何例外,就像这样
List<Long> ids = getIds();//getIds returns List<Long>
但是当我尝试通过
遍历 ids 列表中的项目时 for (Long id : ids)
我得到异常
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
这个值是206131954,不知道为什么能把这个值加到list里,后来遍历list的时候就报错了。
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();
}
使用List<BigInteger>
代替List<Long>
BigInteger 能够容纳比 Long 更大的整数。
BigInteger holds (2^32)^Integer.MAX_VALUE;
Long holds (2^63)-1;