JPA - SQLSyntaxErrorException
2024. 3. 9. 02:52ㆍ팁 모음 장소
[ 문제 원인 ]
JPA를 공부하고 있다가 문법적 오류가 없는데 hibernate로 JPA를 작성하던 도중 SQLSyntaxErrorException이 떴었다. 당시 코드는 초기 데이터를 초기화하는 부분에서 일어났었다. 오류 로그를 보니, JPQL로 작성한 부분도 아니고 그냥 에러가 일어날 수 없는 부분이었다.
확인용 코드:
오류의 시작지점
@EventListener(ApplicationReadyEvent.class)
public void initData() {
log.info("test data init");
itemRepository.save(new Item("itemA", 10000, 10));
itemRepository.save(new Item("itemB", 20000, 20));
}
오류 스택 1
@Override
public Item save(Item item) {
return itemRepositoryV2.save(item);
}
오류 스택 2
public interface ItemRepositoryV2 extends JpaRepository<Item, Long> {
}
[ 해결방법 ]
에러 메시지
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:
아니 어떻게 자동으로 스프링 데이터가 만들어주고 어려운 것도 아니고 그냥 save 함수인데 어떻게 에러가 일어나는지 도저히 이해가 안됐었다. 스프링 DB연결 문제인가 어디 Configuration이 잘못됐나 확인하느라고 정신이 없었는데 마지막 에러 부분에서 답을 찾을 수 있었다. 기존에 계속 비우지 않고 test라는 이름으로 DB를 계속 지우지 않은 채 사용했는데 none으로 설정이 되어있었던 건지 자동 시퀀스 생성 부분에서 에러가 발생한 것이었다.
단순히 1줄만 추가해주면 된다. 이렇게 해결이 된 것을 보고 든 생각은 프로젝트라면 기본 설정이라 일어나지 않겠지만, 개인 공부에서는 충분히 일어날 수 있겠다 싶었다.
spring.jpa.hibernate.ddl-auto=create
'팁 모음 장소' 카테고리의 다른 글
2024년 아마존 리눅스 MySQL 설치 (0) | 2024.05.19 |
---|---|
Json을 웹 브라우저에서 쉽게 보는 방법 (0) | 2024.03.20 |
JPA 프로그래밍 - LazyInitializationException (1) | 2024.02.18 |
스프링 부트 3.x - queryDSL gradle 설정 방법 (0) | 2024.02.14 |
Spring 3.X Hibernate5Module 설정 방법 (1) | 2024.02.14 |