본문 바로가기

Web

JPA - column 'column_name' cannot be null 에러 해결하기

문제 상황

Product 테이블의 category_pk는 not null 제약조건이 걸려있는 컬럼이였습니다.

Product entity에 @ColumnDefault 어노테이션을 사용하여 default 값을 설정하였지만 계속해서 위와 같은 에러가 발생하였습니다.

 

문제 해결

@ColumnDefault를 삭제하고 @DynamicInsert를 추가하였습니다.

ColumnDefault의 역할을 잘못 이해하였는데, ColumnDefault는 DDL 시에 테이블 스키마 설정을 해주는 역할입니다.

따라서, insert시에 특정값을 기본으로 넣어주는 기능은 없습니다!

 

 

@DynamicInsert 는 insert를 할때 null인 필드를 제외시켜주는 역할을 하기 때문에 Product에 default로 잡혀있는 값으로 insert가 되는것을 확인 할 수 있습니다.