검색기능을 구현하면서 상위 검색키워드 5개를 추출하는 쿼리다.
mapper.xml에 작성된 쿼리인데, 실행하고 보니
The content of elements must consist of well-formed character data or markup
라는 오류문구가 뜨면서 실행되지 않는다.
DB에서 테스트로 먼저 구현할때는 잘 떠서 그대로 작성했더니 예상치못한 오류가 뜬것이다.
SELECT * FROM (
SELECT rownum rnum, B.* from (
SELECT keyword_word, count(keyword_word) as wcnt
FROM keyword
GROUP BY keyword_word
ORDER BY wcnt DESC ) B
) KEYWORD
WHERE rnum <= 5
DB에서는 조회결과가 잘 뜨지만 스프링 프레임워크에서 똑같이 작성하다보니 생긴 오류였다.
마지막줄 where rnum <= 5
이부분이 문제였는데, xml 파일에서는 부등호를 태그로 인식하여 생긴 오류였다.
태그로 인식되는것을 방지하기 위해 마지막줄 코드를 <![CDATA[WHERE rnum <= 5]]>
로 수정하여 재실행 했더니 정상적으로 결과가 출력되었다.