본문 바로가기

Server/Spring

[Spring/Error]java.lang.IllegalArgumentException: After saving the identifier must not be null!

상황

회원 정보를 postman을 이용해서 데이터베이스에 저장하기 위해 다음과 같은 요청을 하였다.

{
    "email":"hgd@gmail.com",
    "name":"홍길동",
    "phone" : "010-1234-5555"
}

 

 

 

에러코드

Internal Server Error가 발생하여, 확인해보았더니 다음과 같은 에러가 발생하였다.

 

 

원인

식별자로 저장된 후에는 null 값이면 안된다라는 오류이다.

memberRepository로 저장하려는 것은 Member 객체이었고, 이를 식별하는 것은 Member클래스에 memberId이다.

Member를 저장하면 memberId가 자동으로 증가하며 생성해준다.

 

해결방안

1. sql문 확인

CREATE TABLE IF NOT EXISTS MEMBER (
    MEMBER_ID bigint NOT NULL AUTO_INCREMENT,
    EMAIL varchar(100) NOT NULL UNIQUE,
    NAME varchar(100) NOT NULL,
    PHONE varchar(100) NOT NULL,
    PRIMARY KEY (MEMBER_ID)
);

sql문을 확인해보니 제대로 AUTO_INCREMENT로 작성하였다.

 

2. Member 클래스 확인

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Member {
    private long memberId;

    private String email;

    private String name;

    private String phone;
}

memberId에 @Id 어노테이션을 붙여주지 않았다.

@Id 어노테이션을 통해 PK를 지정해주었다.