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