- 엔티티를 DB에서 조회하여 생성하는 것이 아닌 직접 생성할 일이 생김
- 컬럼이 너무 많아 다음과 같이 @Builder를 사용 하기로 결정
@Getter
@Builder
public class MyEntity {
@Id
private Long id;
@Column("subject")
private String subject;
@Column("contents")
private String contents;
}
- 직접 Builder 로 생성하여 개발한 기능은 정상적으로 동작 하였음
- 그러나 기존 DB를 조회해서 Mybatis로 엔티티를 생성하는, 조회 API를 테스트 하던 중 에러가 발생 함
Error attempting to get column 'subject' from result set.
Cause: java.sql.SQLException: Out of range value for column 'subject' : value 입력값
- 위 에러 메세지로는 구글링해도 Data field 와 엔티티의 타입이 맞지 않다른 검색결과가 많았음
- 깊게 찾아본 결과 원인은 다음과 같았음
- @Builder 를 넣으면 기본생성자가 사라짐
- Mybartis 는 기본 생성자가 필요함
- @NoArgsConstrucor 를 추가해서 해결 가능
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MyEntity {
@Id
private Long id;
@Column("subject")
private String subject;
@Column("contents")
private String contents;
}
- @Builder 를 사용하면 기본생성자가 사라진다는걸 알게됨
- build 폴더에서 직접 컴파일된 클래스 코드를 보면 알 수 있음