He creado una NamedQuery que se ve así:
@NamedQuery(name = "EventLog.viewDatesInclude",
query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
+ "el.timeMark <= :dateTo AND "
+ "el.name IN (:inclList)")
Lo que quiero hacer es completar el parámetro: inclList con una lista de elementos en lugar de un elemento. Por ejemplo, si tengo un new List<String>() { "a", "b", "c" }
¿cómo lo consigo en el parámetro: inclList? Solo me permite codificar una cadena. Por ejemplo:
setParameter("inclList", "a") // works
setParameter("inclList", "a, b") // does not work
setParameter("inclList", "'a', 'b'") // does not work
setParameter("inclList", list) // throws an exception
Sé que podría simplemente construir una cadena y construir la consulta completa a partir de eso, pero quería evitar la sobrecarga. ¿Existe una forma mejor de hacer esto?
Pregunta relacionada: si la lista es muy grande, ¿hay alguna buena forma de crear consultas como esa?