Slack 채널 정리
Native Query 사용 시 Space is not allowed after parameter prefix ':' 에러 처리 방법
tzara
2019. 11. 27. 10:11
mariaDB, JPA 에서 Native Query 사용 중인데 쿼리 내에서 변수 사용하려고 하니 org.hibernate.QueryException: Space is not allowed after parameter prefix ':' 에러 발생.
SELECT ..., @curr_dist := NVL(ST_DISTANCE(mach_pt, lag0), 0) AS mov_dist,
CASE
WHEN @curr_dist > 0 && @prev_dist = 0 THEN 'S'
WHEN @curr_dist = 0 && @prev_dist > 0 THEN 'E'
WHEN @curr_dist = 0 && @prev_dist = 0 THEN 'C'
ELSE 'M'
END run_flag
...
위 쿼리에서 '@curr_dist :=' 의 ':= ' 부분에서 말썽.
'\\:= ' 백슬래쉬 두 개 붙여주면 된다는 곳이 많아 시도해보았지만 동일한 증상. 변수 사용 안하고 원래대로 길게 다시 풀어쓰려다가 마지막이다란 마음으로 검색해보는데 Hibernate 4.3.7 이상부터는 백슬래쉬 1개만 쓰면 된다는 얘기가 어디 있길래 시도해봤더니 문제 없이 잘 되는군요.
요약 : JPA Native Query 쓸 때 Space is not allowed after parameter prefix ':' 에러 발생하면 하이버네이트 버전에 따라 '\\:= ' 나 '\:= ' 로 수정해 사용해보세요.