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 ':' 에러 발생하면 하이버네이트 버전에 따라 '\\:= ' 나 '\:= ' 로 수정해 사용해보세요.
'Slack 채널 정리' 카테고리의 다른 글
제목 붙이기 애매한 자바 코딩 얘기 (0) | 2019.11.27 |
---|---|
python turtle 로 하트 그리는 소스 (0) | 2019.11.27 |
sqlite 데이터, mariaDB로 이전 (0) | 2019.11.27 |
DB 데이터 Kafka로 publish (0) | 2019.11.27 |
java - snake to camel (0) | 2019.11.26 |