SW개발/Hibernate
setParameter에 enum 안 들어가는 상황
개소왕
2018. 10. 24. 19:27
* 개요
SQLQuery q = ...
q.setParameter(enum값) 코드가 있었음
결과가 안 나오는 문제.
* 원인
- mysql 에 보내진 쿼리를 확인해 보니 다음과 같았음
( 참고 : mysql 쿼리 보는 법
http://dogcowking.tistory.com/246)
2018-10-24T10:09:14.815899Z 60 Query /* dynamic native SQL query */ select .... 중략 .....
where mType = x'ACED00057E72002B636F6D2E6369646F672E636F6E6372657465696E666F2E6D6F64656C2E436953656374696F6E2454797065
00000000000000001200007872000E6A6176612E6C616E672E456E756D00000000000000001200007870740003636970'
mType 이 @Enumerated 선언된 속성인데 이런식으로 표현됨
- 해당 메서드는 HQL 사용이 아니라, SQLQuery 이용하고 있었기 때문에
q.setParameter("mType", mType);
형태로 호출하면 잘못된 값이 들어가게 됨
* 해결
SQLQuery 에는 속성 그대로 사용 못하고, SQL 에 들어갈 내용으로 값을 넣어줘야 함.
q.setParameter("mType", mType.toString());