Mybatis Entity에 @Builder 를 사용 했을때 오류

대충 쓰는 블로그·2022년 1월 25일
1
  • 엔티티를 DB에서 조회하여 생성하는 것이 아닌 직접 생성할 일이 생김
  • 컬럼이 너무 많아 다음과 같이 @Builder를 사용 하기로 결정
@Getter
@Builder // 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 폴더에서 직접 컴파일된 클래스 코드를 보면 알 수 있음

profile
일단 대충 쓰고 나중에 수습 하던지 말던지

0개의 댓글