스프링에서 entity를 만들고 Heidi SQL에서 쿼리문을 날렸는데, 아래와 같은 오류가 발생했다.
PRIMARY KEY가 중복이 되어서 오류가 발생하였다는 것인데, 아래와 같은 코드 때문에 오류가 난 것이다.
@GeneratedValue란 JPA에서 Entity의 Primary Key를 생성하여 주는 기능인데, strategy로 네 가지 전략을 사용할 수 있다.
여기서는 strategy = GenerationType.IDENTITY 전략을 사용하였는데, 이 것이 Duplicate key error의 원인이었다.
GenerationType.IDENTITY는 기본 키 생성을 데이터베이스에 위임하여 DB에서 PK를 AUTO_INCREMENT 한다.
AUTO_INCREMENT를 할 때 PK가 1부터 시작하여 1씩 올라가는데, PK에 직접 0을 INSERT 하니 AUTO_INCREMENT와 꼬인 것이다.
PK에 0을 입력한 첫 번째 줄을 지우면 Duplicate error가 해결된다.