데이터베이스 쿼리 (최대 절전 모드)로 채워진 목록 ID가 있습니다. 데이터베이스 은 PSQL입니다. ID 열은 bigint 유형입니다. 이제 IDS 목록이Hibernate 쿼리를 사용하여 채워진 목록을 반복 할 때 ClassCastException이 발생했습니다.
List<Long> ids = getIds();//getIds returns List<Long>
같은 예외없이 채워집니다하지만
for (Long id : ids)
하여 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();
}
우리는 정말'getIds의 몸을 사용할 수 있습니다()'방식 –
이 가장 가능성이 필드 매핑 문제 - '목록는'내부적으로 제네릭이 아닌'List', 그래서 코드는 컴파일하지만 휴식 런타임에. –
dasblinkenlight
'getIds' 메소드 내에 쿼리를 보여 주시겠습니까? 이게 너의 방법이야? –