Zbudowałem NamedQuery, które wygląda następująco:
@NamedQuery(name = "EventLog.viewDatesInclude",
query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
+ "el.timeMark <= :dateTo AND "
+ "el.name IN (:inclList)")
To, co chcę zrobić, to wypełnić parametr: includeList listą pozycji zamiast jednej pozycji. Na przykład, jeśli mam, new List<String>() { "a", "b", "c" }
jak mogę to uzyskać w parametrze: inclList? Pozwala mi tylko skodyfikować jeden ciąg. Na przykład:
setParameter("inclList", "a") // works
setParameter("inclList", "a, b") // does not work
setParameter("inclList", "'a', 'b'") // does not work
setParameter("inclList", list) // throws an exception
Wiem, że mógłbym po prostu zbudować ciąg znaków i na jego podstawie zbudować całe zapytanie, ale chciałem uniknąć narzutu. Czy jest lepszy sposób na zrobienie tego?
Powiązane pytanie: jeśli lista jest bardzo duża, czy istnieje dobry sposób na zbudowanie takiego zapytania?