springboot3.1.4 java17 JPA 환경의 서버 프로그램SML은 mariaDB 를 사용하고 있다
이 데이터베이스는 boolean 형의 컬럼을 tinyint(1) 로 참,거짓을 관리 한다
SML의 Entity클래스의 변수 playlistStatus는
데이터베이스의 playlist_status 컬럼을 의미하며
어노테이션으로 속성을 명시하고 있다
@Column(name = "playlist_status", nullable = false, columnDefinition = "TINYINT(1) DEFAULT 1")
private Boolean playlistStatus;
하지만 실제 데이터베이스와 Entity클래스의 차이로 인해 오류가 발생한다
에러발생시점은
해당 컬럼에 null값이 포함 되어 수정 요청이 데이터베이스로 갈때
DataIntegrityViolationException: not-null property references a null or transient value
에러가 발생한다
notnull 속성에 null을 넣으니 당연히 에러가 발생할거라 생각 하겠지만
디폴트값이 1 일때 null이 입력 되면 저장되는 값은 1 이여야 한다
문제의 원인은 어노테이션 문법의 오류라고 추측하고 있다
columnDefinition = "TINYINT(1) DEFAULT 1"
가 문법상 맞지 않거나
mariaDB와 JPA 의 연동할때 boolean데이터형을 명시하는 어노테이션의 오류
(데이터형에 boolean 혹은 tinyint를 기입)(값을 false,trur 혹은 0,1)
부정확한 어노테이션작성으로인해 디폴트값 = 1 이 적용되지않아서
notNull을 디폴트값으로 저장 하지못해는것 같다
2024/03/12 작성
'오류기록' 카테고리의 다른 글
db가 로컬서버의 응답을 받지않음 500 (db ip 허용) (0) | 2022.02.17 |
---|
댓글