배경

  • MyBatis를 이용해 특정 id별 COUNT 결과를 Pair<Long, Int> 로 리턴했더니, 타입 캐스팅 예외가 발생했다.
    • java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
  • 문제 상황 예시 코드
@Select("...")
fun countByIds(ids: List<Long>): List<Pair<Long, Int>>

원인

  • MySQL의 COUNT 함수의 리턴 타입은 BIGINT 이다.
  • MySQL JDBC Driver 에서 BIGINT는 기본적으로 Java의 Long 타입으로 변환되므로 타입 캐스팅 예외가 발생한다.

참고 자료