2019년 6월 19일 수요일

queryDsl로 groupBy having 사용시 에러 발생.

queryDsl로 groupBy having을 사용할 때 아래와 같은 에러가 발생한다.
nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: having near line 3, column 1 [select count(distinct multiLangInfo.languageCode)\nfrom com.charzin.cems.api.model.multiLang.MultiLangInfo multiLangInfo\nhaving multiLangInfo.languageType = ?1]


문제의 원인은  fetchCount()라는 전체 개수를 가져오는 함수를 사용하는 데, 이 함수가 만들어 주는 sql 쿼리문이 잘못 되었다. 위에 오류내용에 나와 있듯이 그냥 groupby를 없애버리는 쿼리를 만든다.

할 수 없이 전체 개수를 구해오는 쿼리를 따로 만들었다.

보통 group by 카운트를 가져오는 from 절 subquery는 queryDsl에서 지원하지 않는다.
여기서 확인.

할 수 없이 네이티브를 사용했다.

댓글 없음:

댓글 쓰기