반응형
java.sql.SQLSyntaxErrorException: (conn=602) Table 'DB이름.hibernate_sequence' doesn't exist 에러
Entity의 PK를 @GeneratedValue(strategy = GenerationType.AUTO)로 해두었을 때 발생한 문제이다.
hibernate_sequence라는 테이블에서 PK를 조회하는데 해당 테이블이 존재하지 않아서 발생한다.
이 때 선택할 수 있는 방법이 두 가지 있다.
- DDL 자동생성 설정 하기
- GenerationType 변경하기
1의 경우에는 실제 운영 환경에서 쓰기에는 매우 위험하다.
DDL을 자동으로 생성한다는 것은 애플리케이션 실행 이후로 DB의 테이블 구조가 막 바뀔 수 있다는 의미이다.
개발 환경이라면 편의성을 위해 종종 사용하는 것 같다.
JPA의 설정만 바꿔주면 된다.
1
Spring Boot 이용 시 application.properties 변경
spring.jpa.hibernate.ddl-auto=create
persistence.xml 변경할 경우 아래 설정 추가
<property name="hibernate.hbm2ddl.auto" value="create"/>
create 외 다른 옵션에 관해서는 다음 링크에서 '2. DB 스키마 자동 생성'을 참고하길 바란다.
https://yeonyeon.tistory.com/179
2
@GeneratedValue(strategy = GenerationType.IDENTITY)
GenerationType을 IDENTITY로 바꿈으로써 PK 값 할당을 DB에게 맡긴다.
헌데 난 이 방법으로도 에러가 났다..😂 (아래 접은 글 참고)
🔻 java.sql.SQLException: Field 'id' doesn't have a default value 에러
더보기
테이블 생성 시 PK에 AUTO_INCREMENT 설정을 해줘야 사용 가능하다!!
반응형
'Develop > Java' 카테고리의 다른 글
[Java] Built-in Package (0) | 2022.02.17 |
---|---|
[Java] toString() 파헤치기 (2) | 2022.02.15 |
[JPA] 프록시와 영속성 전이 (0) | 2022.01.13 |
[JPA] Entity 매핑 (0) | 2022.01.10 |
[JPA] JPA란? (0) | 2022.01.03 |