Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[웹] JPA @GeneratedValue(strategy = GenerationType.IDENTITY) 본문

[웹] JPA @GeneratedValue(strategy = GenerationType.IDENTITY)

코드와이 2021. 7. 13. 21:43

 

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이 있다.

  1. IDENTITY
    • 데이터베이스가 알아서 생성
    • Auto_Increment
  2. SEQUENCE
    • 데이터베이스 시퀀스 오브젝트
    • @SequenceGenerator 필요
  3. TABLE
    • 키 생성용 테이블 사용, 모든 DB에서 사용
    • @TableGenerator 필요
  4. 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