본문 바로가기

기록/SQL

[MyBatis] [Error] Cause: java.lang.IndexOutOfBoundsException

SMALL

[문제상황]

Mybatis를 사용하여 데이터베이스에서 데이터를 가져오는 과정에서 에러가 발생했다.

Cause: java.lang.IndexOutOfBoundsException: Index 4 out of bounds for length 4

문제 상황을 보면 배열을 사용할 때 나타나는 오류와 비슷한데... 동적으로 크기 계산을 하고 있기 때문에

에러를 어디서 체크해야할지 고민했다.

 

[해결 방법]

결과적으로 원인은 모델 객체였다. 내 모델은 @Builder를 사용하고 있는데,

Mybatis에서 객체를 매핑할때 resultMap로 리턴하는데 Mybatis에서 미리 인스턴스를 생성한다.

그런데 모델 클래스에 모든 인자가 필요한 생성자밖에 없어서 문제가 생기는 것이다.

그래서 필요한 인자가 없다면 객체 수에 따라서 위와 같은 에러가 발생한 것 같다.

즉, 아래와 같은 두개의 어노테이션을 추가해주면 된다.

@NoArgsConstructor
@AllArgsConstructor

 

SMALL