데이터베이스에 'hibernate_sequence'(이)라는 개체가 이미 있습니다.

  • Table of Contents

환경

  • Java 1.8 , Kotlin
  • SpringBoot 2.7.18

문제 상황

Spring Data Jpa를 사용하면서 기본키 생성을 AUTO_INCREMENT로 하기 위해 @SequenceGenerator 를 사용하여 시퀀스를 생성 후, 이를 기본키로 할당 했었다.

이후, 시퀀스 생성이 아닌 다른 방식을 사용하기 위해 주석 처리를 하였음에도 에러가 발생했다.

문제 원인

테이블 기본키는 시퀀스로 하지 않고 별도 방식의 할당 없이 @Id 만 존재하는 경우 기본적으로 TableGenerator를 이용한다. 이 방식은 별도의 시퀀스를 테이블로 관리하고 이 테이블을 조회하여 시퀀스를 할당 받는 방식이다.

해결

JPA 설정 중, hibernate.id.new_generator_mappingsfalse 로 바꾼다. 이 옵션은 5.0 이후 버전 부터는 true가 기본 값이며, 이를 true로 하는 경우 기본적으로 시퀀스 생성 시, 테이블 방식 또는 데이터베이스 시퀀스를 자동으로 사용하도록 한다.

참고

  • https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#configurations-mapping

© 2024. Chiptune93 All rights reserved.