dev_공부일지/JPA 에러 정리
and token '=', mismatched input '=', (JPQL 특정 문자열 상위)
dev_0hoon
2024. 3. 14. 15:19
여러 테이블이 하나의 파일첨부 테이블을 사용하다보니 쿼리를 만들 때에 번거로움이 꽤 있다.
이 중에 썸네일로만 사용되는 쿼리를 만들어보려 했다.
변경 전 JPQL
@Query("SELECT w FROM Work w JOIN FETCH w.files f " +
"WHERE w.id = :id ORDER BY f.cd = 'thumb_nail' desc, f.ord ASC, f.tmplType ASC, f.picOrd ASC")
직관적으로 DB SQL로 만들어보려니 잘 안됐다. 메뉴얼을 봐도 딱히 답이 없는 상황이었다. 여러 방식을 사용했고 만든 결과
@Query("SELECT w FROM Work w JOIN FETCH w.files f " +
"WHERE w.id = :id ORDER BY CASE WHEN f.cd = 'thumb_nail' THEN 0 ELSE 1 END, " +
"f.ord ASC, f.tmplType ASC, f.picOrd ASC")
Order By 절 안에 CASE WHEN을 사용해서 상위로 올리는 방식으로 했다. 아직 나도 이해는 잘 가지 않는다.