발생상황
@Column(nullable = false, length = 15)
@ColumnDefault("'DEFAULT_THEMA'")
private String thema;
@ColumnDefault 어노테이션이 붙은 컬럼에 데이터를 넣으려 할 때 발생
오류메시지
NULL not allowed for column "THEMA"; SQL statement: insert into Blog (commentAllowed,member_email,publicTF,thema,blog_id) values (?,?,?,?,default) [23502-224]
발생원인
💡@ColumnDefault는 데이터베이스 수준에서 기본값을 제공하는 것이며, JPA나 Hibernate가 자동으로 Java 객체수준에서 값을 설정하는 것이 아니기 때문에 디폴트 값이 들어가는 것이 아닌 null 값이 할당된다.
해결방법
@Column(nullable = false, length = 15)
@ColumnDefault("'DEFAULT_THEMA'")
private String thema = "DEFAULT_THEMA"
직접 값을 할당해주면 된다.
추가사항
@Column(nullable = false)
@ColumnDefault("false")
// private boolean commentAllowed;
private boolean commentAllowed = false;
boolean의 경우엔 null 값이 할당되어도 false가 할당되기 때문에 오류가 발생하지 않는다. 하지만 되도록이면 명시해주는 것이 좋을 것 같다.
'트러블 슈팅 > Spring Data' 카테고리의 다른 글
[트러블 슈팅] Could not create query for public abstract (0) | 2025.01.01 |
---|---|
[트러블 슈팅] Spring Data Redis와 Spring Redis Search 동시에 사용시 발생하는 문제 (0) | 2025.01.01 |