spring

[도메인의 기본 생성자 오류]### Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index 12 out of bounds for length 12

seulhasony 2023. 12. 21. 14:25

1. 에러 발생 내용과 상황

- DB내에 있는 정보를 List로 가져오는 로직

### Error querying database.  Cause: java.lang.IndexOutOfBoundsException: Index 12 out of bounds for length 12

 

2. 원인

- DTO내에 데이터를 CRUD를 하면서 발생되는 예외의 상황을 화면 단에

string값으로 노출시키기 위해 만든 List 객체가 기본생성자가 없었기 때문이다.

 

아래의 코드는 위에 오류가 발생했던 DTO의 간단한 예제이다.

@Builder
@Getter
public class product {
    private int productId;
    private String productName;
    private String cost;
  
    private List<String> msg;
}

 

 

여기서 List를 만들기 이전에는 오류가 발생하지 않은 로직이 List를 만들면서 해당 오류가 발생했다는 점이 체크포인트이다.

 

3. 결과와 해결방법

사용하려고 하는 dto 내의 List는 데이터를 가지고 오는 용도가 아니기 때문에

DB에 SELECT를 할 경우, 당연히 해당 값은 가져오지 않는다.(없기 때문에)

그리고 이미 가져온 데이터를 데리고 다니면서(?) 로직내에 문제가 생겼을 경우에 add하기 때문에 db에서 가져오는 시점에 기본 생성자가 필요했다. 

 

그래서 오류가 발생된 dto 내에 하기의 룸복 어노테이션을 추가해주었고 해결되었다!

@NoArgsConstructor
@AllArgsConstructor

 

 

이상! 오늘도 아는 오류 추가 완료!