먼저 문제가된 컬럼 2개를 보자.
@Column(name = "tr_status", columnDefinition = "varchar(10) default 'start'")
@Check(constraints = "(tr_status IN ('start', 'done', 'error'))")
private String trStatus;
@Column(name = "startTransCoding", columnDefinition = "datetime default current_timestamp")
private LocalDateTime startTransCoding;
해당 데이터가 null 이면 default 값을 주려고 설정해준 제약 조건들인데
repo save method를 호출하여 데이터를 삽입할때
해당 컬럼값에 null 이들어가는것이다.
db table에 제약조건은 제대로 걸려있는것을 확인했는데 왜 문제가 발생했을까 ?
이유는 간단했다.
into
media (filename, finish_trans_coding, ingest_time, progress, start_trans_coding, tr_status, user_id)
values
(?, ?, ?, ?, ?, ?, ?)
알아서 null 값은 걸러서 insert 해줄거라고 생각했지만 아니였다..
해당 문제는 @DynamicInsert 어노테이션으로 해결했다.
@DynamicInsert 적용 후 jpql
into
media (filename, user_id)
values
(?, ?)