티스토리 뷰

Session s= getSession();

Criteria c = s.createCriteria(CiClst.class);

c.add(Restrictions.in("clrId", clrIds));

List<CiClst> r = c.list();

s.close();



java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long




* 원인

clrIds 가 Hibernate - SQL 통해 가져온 리스트였고, SQLQuery 통해 가져온 것.

- (Criteria나 Query 가 아닌... ) SQLQuery 로 가져올 경우 Long 이 아닌 BigInteger 로 가져오게 됨.

- 이걸 Long 으로 바꿔서 리스트에 넣었어야 했는데, 그렇지 않음.

- List를 제너릭 없이 쓰다보니 List<Long>에 사실상 List<BigInteger> 가 들어가 있었고,

- Restrictions.in(...) 에서 해당 오류 발생한것...



* 해결

clrIds 가져올때

SQLQuery#addScalar() 하든지

list() 결과값을 직접 캐스팅 하든지...

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함