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을 사용해서 상위로 올리는 방식으로 했다. 아직 나도 이해는 잘 가지 않는다.