728x90
발단
정부 프레임워크 사용을 위해 기존의 spring boot v3 가 아닌 v2 로 다운그레이드를 진행하면서 sql 이 실행되지 않아 동작하지 않는 경우가 발생하였다.
프로젝트를 진행하며 DB 검색을 위한 조건이 많지 않다면 JPA 의 native query 를 사용하였습니다. 이 때 sql 작성시 `;`을 붙여 해당 query 의 끝을 의미하게 하였습니다.
환경
- spring boot starter jpa
- 페이징과 같이 사용
- ...
원인
Spring boot 의 다운그레이드를 언급한건 jpa 의 버전이 spring boot 버전에 따라 달라지는 것을 명시하기 위함이다.
마이그레이션 전에 동작했지만 이후 동작하지 않은 이유는 `;` 때문이었습니다.
JPA 버전에 따른 sql 전처리?
v3 에서는 `;` 문자가 sql 마지막에 추가되어 있어도 소거한뒤 페이징을 위한 구문을 추가하여 sql 을 구성하는 듯 하였으나, v2 에서는 v3 에서와 같은 동작을 보장하지 않는 듯 합니다.
해결
(conn=641) You have an error in your SQL syntax; check the manual that corresponds to your ..db.. server version for the right syntax to use near 'limit 10' at line 29
만약 native query 를 paging 과 같이 사용하고 있어서 위와 같은 오류가 발생하였다면 sql 끝에 입력되어있는 `;` 를 소거하시고 확인해보세요.
728x90