다음과 같은 NamedQuery를 만들었습니다.
@NamedQuery(name = "EventLog.viewDatesInclude",
query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
+ "el.timeMark <= :dateTo AND "
+ "el.name IN (:inclList)")
내가 원하는 것은 하나의 항목 대신 항목 목록으로 매개 변수 : inclList를 채우는 것입니다. 예를 들어 new List<String>() { "a", "b", "c" }
: inclList 매개 변수에서 어떻게 얻을 수 있습니까? 하나의 문자열 만 코드화 할 수 있습니다. 예를 들면 :
setParameter("inclList", "a") // works
setParameter("inclList", "a, b") // does not work
setParameter("inclList", "'a', 'b'") // does not work
setParameter("inclList", list) // throws an exception
문자열을 작성하고 그로부터 전체 쿼리를 작성할 수 있다는 것을 알고 있지만 오버 헤드를 피하고 싶었습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
관련 질문 : 목록이 매우 큰 경우 이와 같은 쿼리를 작성하는 좋은 방법이 있습니까?
이것은 stackoverflow.com/questions/1557085/… 의 복제본 이지만이 스레드는 유용한 답변을 제공합니다.
—
Mike Ryan