코드와이
[웹] JPA @GeneratedValue(strategy = GenerationType.IDENTITY) 본문
JPA
- 자바 ORM 기술에 대한 표준 명세로, JAVA 에서 제공하는 API이다.
Spring-Data-JPA
- JPA 를 쉽게 사용할 수 있도록 Spring 에서 지원해주는 프레임워크이다.
JPA를 사용해서 프로젝트를 진행하던 중...
String 타입의 id에 @Id 와 Identity 타입의 @GeneratedValue 를 설정하고
DB table 에서 주요키로 id char(8) NOT NULL AUTO_INCREMENT 로 설정하니
Field 'id' doesn't have a default value 라는 오류가 났다.
먼저 GeneratedValue 를 살펴보면,
GeneratedValue 는 자동 생성으로 다음과 같은 TYPE이 있다.
- IDENTITY
- 데이터베이스가 알아서 생성
- Auto_Increment
- SEQUENCE
- 데이터베이스 시퀀스 오브젝트
- @SequenceGenerator 필요
- TABLE
- 키 생성용 테이블 사용, 모든 DB에서 사용
- @TableGenerator 필요
- AUTO
- 자동 지정, 기본값
위와 같이 IDENTITY 는 DB 쪽에서 자동으로 생성시켜줘야 한다.
따라서
DB Table 의 id 를 id bigint NOT NULL AUTO_INCREMENT 로 수정하니 오류 없이 잘 작동시킬 수 있었다.
백엔드의 Model에서 id 를 String 타입으로 선언했지만 JPA는 DB Table 을 제대로 생성시키는 것이 아닌 도와주는(?) 기능만 하기 때문에 DB 상에 명확한 Table 을 생성해주면 오류를 해결할 수 있다.
'웹' 카테고리의 다른 글
[웹] JPA (0) | 2021.08.08 |
---|---|
[웹] Spring(3) Interceptor (0) | 2021.08.07 |
[웹] Vue.js(3) (0) | 2021.05.13 |
[웹] Vue.js(2) (0) | 2021.05.13 |
[웹] Vue.js (0) | 2021.05.10 |