Java

Spring JPA + H2 사용시 GenerationType.IDENTITY 오류

멋진그이름 2022. 1. 17. 14:58

<개요>

- 로컬 테스트코드 목적으로 data.sql 과 함께 h2 database 를 구성하여 사용 중
- 1.4.199 -> 2.0.206 버전으로 업그레이드 호환성 문제 발생

<내용>

1. 예약어 추가

- 사용중이던 테이블 중 USER 테이블이 존재하는데 h2 ver 2에서는 USER 가 예약어로 지정되어 사용할 수 없는 문제 발생
- datasource 설정 중 url 부분에 다음과 같이 추가

url: jdbc:h2:~/test;NON_KEYWORDS=USER

2. GeneratedValue

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)

- 기존에는 다음과 같이 설정시 ID가 자동으로 세팅되어 수행되었으나 ver2에서는 id가 null로 들어오는 현상발생
- github에 해당 이슈가 존재하며 Hibernate ORM 에서 아직 해당기능을 지원하지 않는 것으로 보임
1) 테스트코드에 id 세팅 부분추가
2) datasource 설정 중 url부분에 다음과 같이 추가

url: jdbc:h2:~/test;MODE=LEGACY



3. drop table의 경우 FK등의 제약사항에 따라서 순서가 필요하게 되는데 이부분 역시 잘 동작하지 않는것으로 보인다.
추가 확인이 필요하다.(22.03.24)

<참조>

https://github.com/h2database/h2database/issues/3302

H2 (version 2.0.202 ) auto_increment not working · Issue #3302 · h2database/h2database

Hello :) We are trying to bump the h2 dependency from 1.4.200 to 2.0.202 and the auto increment is not working anymore in my spring application. <dependency> <groupId>com.h2database<...

github.com