[TIL] @ColumnDefault 오류와 기본 값 설정 방법
by 달쿨개요
프로젝트를 진행하며, soft delete 방식으로 삭제를 구현하기 위해 isDeleted 필드를 만들고 엔티티가 생성될 때 자동으로 false를 할당해주기 위해 @ColumnDefault 를 작성했다.
그런데 실제로 생성시에 false 값이 아닌 null 값이 들어가는 문제를 발견했고, 왜 @ColumnDefalut가 제대로 작동하지 않는지 궁금해졌다.
@ColumnDefault은 왜 작동하지 않는가
@ColumnDefault는 table을 처음 생성할 때 default 값을 생성해 주는데, 이는 hibernate에서 테이블 속성이 create-drop인 경우에만 적용된다고 한다. 즉, create-drop이 아니라면 제대로 적용되지 않는 것이다.
기본 값 할당하기
필드 생성 시 값을 할당해주는 방식으로 해결할 수 있다.
Boolean은 값 할당 없이도 nullable = false로 작성해주면 null을 false로 할당해 제대로 작동된다.
작성하면서 깨달았는데 그냥 래퍼타입 말고 기본 데이터 타입을 사용하면 처음부터 null 허용을 막기 때문에 제대로 사용할 수 있었다.
느낀 점
@ColumnDefault를 사용한다고 무조건 기본 값이 설정되지 않는다는 것을 알았다. 그리고 필드 설정할 때 습관적으로 래퍼 클래스를 사용하는데 null 값 허용할지 안할지 생각하고 사용해야 겠다고 다시 한번 다짐했다.
'TIL' 카테고리의 다른 글
[TIL] COALESCE 함수: NULL 이 아닌 값 먼저 반환 (0) | 2024.12.29 |
---|---|
[TIL] 엔티티 변경 사항 Q 클래스에 반영하기 (1) | 2024.12.13 |
[TIL] 배포 서버 시간을 한국 시간으로 설정 (1) | 2024.11.27 |
[TIL] S3 사진 외부에서 접근 안되는 문제 해결 (2) | 2024.11.25 |
[TIL] RDS 연결 시의 DB Name에 대해 알게 된 점 (3) | 2024.11.22 |
블로그의 정보
note
달쿨