Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

Code Block
Caused by: java.sql.SQLSyntaxErrorException: Table 'DBNAME.hibernate_sequence' doesn't exist


원인

Entity 의 ID 생성 strategy 가 GenerationType.AUTO 일 경우 hibernate는 자동으로 기본 sequence 정보 테이블인 hibernate_sequence  을 찾지만 없어서 발생

Code Block
languagejava
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO )
 private Long id;

해결

1. 테이블 생성

...

hibernate_sequence 생성

 drop 스키마후 application.properties 에 다음 내용 추가

Code Block
spring.jpa.hibernate.ddl-auto=create
Warning

기존 스키마 삭제하면 데이타 날라가니까 주의

strategy 변경

수동으로 입력하도록 설정 변경

application.properties 에 다음 내용 추가

Code Block
spring.jpa.hibernate.use-new-id-generator-mappings=false


Entity 객체 수정

Code Block
languagejava
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Long id;


sequence generator 사용


Code Block
languagejava
@Entity
@Data
@Table(name="Customers")
@SequenceGenerator(name="my_seq_generator",
        sequenceName = "CUSTOMER_SEQUENCE"   // DB Sequence Name
        //, initialValue = 1,
        // allocationSize = 50
)
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;




Ref