After saving the identifier must not be null 에러 해결

Minit88·2023년 4월 18일
0

Spring

목록 보기
8/16
post-thumbnail

문제


Spring Data JDBC 실습을 위한 인메모리 DB인 H2와 인텔리제이를 연결하는 중 오류가 발생했다.

위 그림대로 Post 요청을 보내어 repository를 통한 save() 메서드를 사용하여, H2에 입력인 message 객체를 저장할 때에 해당 에러가 발생하였다.

문제 해결 및 분석

분석

After saving the identifier must not be null

  • 식별자로 저장된 후에는 null값이 나오면 안된다라는 의미이다.

Message Table은 AUTO_INCREMENT를 사용한 id와 메세지 내용을 담을 message로 구성이 되어있다.

CREATE TABLE IF NOT EXISTS MESSAGE (
    message_id bigint NOT NULL AUTO_INCREMENT,
    message varchar(100) NOT NULL,
    PRIMARY KEY (message_id)
);

SQL 구문에서는 문제가 될만한 부분이 없었고,

repository의 CrudRepository에서 놓친 부분이 있었다.

  • CrudRepository.Interface는 Spring에서 지원해주는 인터페이스이다.
  • MessegeService.class에서 DI를 통해 MessageRepository.Interface를 주입받아 사용할 때 save()메서드를 사용했다.

즉, save() 메서드를 사용할 때에 컬럼을 명시하지 않으면 null값으로 덮어쓰는 현상이 발생하게 된다.
참고

해당 Message 엔터티에 식별자로 사용하는 messageId에 @Id 애너테이션을 붙여 열로 지정해줌으로써 해당 오류를 해결하였다.

profile
" To be BE "

0개의 댓글