Programming/Java

JAVA17 - JPA이용시 제약조건 해결법 "org.h2.jdbc.JdbcSQLSyntaxErrorException: Constraint already exists;"

개발자 쓔쓔 2023. 5. 23. 16:42
반응형

원인을 발견하게 된 계기

Entity에 "Inheritance" 어노테이션을 추가했고, "DiscriminatiorColumn"을 추가했을 때
자동으로 생겨지는 "DTYPE"칼럼이 생기지 않으면서 insert가 되지 않은 문제를 발생했다.

 

해당 부분에 대한 에러를 보면 아래와 같았다,

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Constraint "FKL7WSNY760HJY6X19KQNDUASBM" already exists; SQL statement:

    alter table Member 
       add constraint FKl7wsny760hjy6x19kqnduasbm

내용을 대략적으로 해석해 보자라면, 테이블에 제약조건을 추가할 때 이미 존재해서 진행될 수 없는 문제라고 한다.

해당 부분을 찾아보니 hibernate의 문제임을 확인했고 해당 버전을 바꿔주니 해결되었다.

 

해결법

Maven인 경우 "version"에 대하여 "5.4.14.Final"로 변경 후 재시작을 해주면 된다.

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.4.14.Final</version>
</dependency>

 

Gradle인 경우, "build.gradle"파일에 아래의 코드를 추가하여 재시작하면 된다.

ext["hibernate.version"] = "5.4.14.Final"
728x90
반응형