Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 다익스트라
- 완탐
- DFS
- 코딩테스트
- 코딩테스트실력진단
- 기본유형
- 완전탐색
- 부분수열의합2
- 싸피
- 알고리즘
- 백준
- JUnit
- Union Find
- 유니온파인드
- JPA
- 그래프
- 그리디
- database
- SWEA
- BFS
- 코테
- 다시보기
- DP
- 알고리즘기본개념
- Spring
- SSAFY
- 트러블슈팅
- 코드트리
- Java
- 자바
Archives
- Today
- Total
HwangHub
hibernate_sequence doesn't exist 본문
Entity의 PK를 @GeneratedValue(strategy = GenerationType.AUTO)로 해두었을 때 발생한 문제이다. 이 문제는 hibernate_sequence라는 테이블에서 PK를 조회하는데 해당 테이블이 존재하지 않아서 발생한다.
hibernate_sequence 테이블이란?
Hibernate5는 GenerationType.AUTO로 PK 생성 전략을 설정하면 다음 순서로 처리한다.
- @Id로 매핑된 Entity의 Field Type이 UUID라면 UUID Generator를 사용하여 생성한다.
- Integer나 Long 과 같은 numerical 타입이라면 Hibernate 설정 파일을 스캔하여 identifierGenerator를 사용하고 있는지 검사한다.
- 만약 사용하지 않으면 GenerationType.IDENTITY와 같이 처리한다.
- 만약 사용한다면, 해당 DB가 GenerationType.SEQUENCE를 지원하는지 확인하고, 지원하면 SEQUENCE 방식으로 처리한다.
- SEQUENCE 방식도 지원하지 않으면 GenerationType.TABLE과 같이 처리한다. 이 때, 키 전용 테이블인 Hibernate_sequence 테이블을 생성하고, 이를 향후에 활용하여 pk generation을 처리한다.
출처 : 티스토리 블로그
이 때 선택할 수 있는 방법이 두 가지 있다.
- DB 스키마 변경하기
- GenerationType 변경하기
첫번째 방법의 경우 일반적으로 ddl-auto를 update로 설정한다던가 하는 방식으로 대처하는 경우가 일반적인데, 이러한 방법은 운영 단계에서는 매우 리스크 있는 선택이다.
따라서 Database에 generationType을 위임하는 IDENTITY로 코드를 바꿔주었다.
AS-IS
public class Post extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
TO-BE
public class Post extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
'DEV-STUDY > Spring' 카테고리의 다른 글
maven project에서 datasource url의 localhost를 인식하지 못하는 이슈 (0) | 2024.01.12 |
---|---|
pom.xml의 xmlns는 뭘까요? (0) | 2024.01.12 |
[OAuth] 동작 원리 (0) | 2023.12.07 |
[JPA] 비밀번호 정규표현식 적용 및 비밀번호 수정 구현 (1) | 2023.11.13 |
[트러블슈팅] InvalidDataAccessResourceUsageException : expected "identifier"; (0) | 2023.11.06 |
Comments