SQL Error: 23505, SQLState: 23505 - JPA 사용 도중
- Web/Spring
- 2023. 8. 20.
JPA를 사용도중 이상한 버그가 발생되었습니다.
코드를 연습하는 과정에서 JPA의 기능 중 하나인 DROP TABLE이 동작되지 않아서 기존의 TABLE에 내용이 그대로 남게 되었으며, 동시에 같은 PK를 INSERT 하는 과정에 의해 개체무결성 오류가 발생되는 문제였습니다.
이는 강의의 코드 중, 과거의 H2 버전을 참고하다 발생된 문제이며 H2의 1.4.199는 상위 hibernate를 가져올 경우 상속된 CLASS의 Entity는 DROP TABLE이 제대로 동작되지 않는 버그였습니다.
이를 간단히 해결하기 위해서는 JPA를 사용하기 위한 라이브러리를 최신버전으로 Update를 해야 할 필요가 있었습니다.
상위 버전 맞추기
SELECT H2VERSION() FROM DUAL;
H2의 SQL를 입력하여, H2의 버전을 최신버전을 찾습니다.
https://mvnrepository.com/artifact/com.h2database/h2
방법
위의 방법대로 라이브러리, H2를 업데이트를 진행했다면, 그다음은 hibernate 또한 업데이트를 진행해주셔야 합니다.
hibernate 또한 메이븐 리포지토리에 존재하며, EntityManager가 들어있는 것을 설치하셔야 합니다.
hibernate를 설치할 때는 H2로 인하여, hibernate 또한 Update가 필요한 상황이므로 DB의 라이브러리가 생겨난 날짜와 근접한 버전을 생성하는 것이 매우 바람직합니다.
너무 상위, 하위가 될수록 호환성 문제가 생길 수 있기 때문입니다.
<!-- JPA 하이버네이트 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.6.15.Final</version>
</dependency>
<!-- H2 데이터베이스 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.2.220</version>
</dependency>
위 과정을 거쳐서, 해당 버전이 탄생하게 되었습니다.
pom.xml 설치 후, 해당 프로젝트에 라이브러리가 제대로 들어있는지 확인까지 완료해주시면 됩니다.
'Web > Spring' 카테고리의 다른 글
[Spring] Eclipse에서 SpringFrameWork 프로젝트 만들기 (0) | 2024.05.06 |
---|---|
JPA 설정하기 (0) | 2023.08.21 |
[Spring] DAO와 MyBatis 연결 (0) | 2023.01.21 |
[Spring] MyBatis의 ResultMap (0) | 2022.10.29 |
[Spring, MyBatis Error] out of range value column 에러처리 (0) | 2022.10.03 |