J'ai construit une NamedQuery qui ressemble à ceci:
@NamedQuery(name = "EventLog.viewDatesInclude",
query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
+ "el.timeMark <= :dateTo AND "
+ "el.name IN (:inclList)")
Ce que je veux faire est de remplir le paramètre :inclList avec une liste d'articles au lieu d'un seul élément. Par exemple si j'ai un new List<String>() { "a", "b", "c" }
comment puis-je obtenir que, dans l' :inclList paramètre? Il ne me permet de codifier une chaîne de caractères. Par exemple:
setParameter("inclList", "a") // works
setParameter("inclList", "a, b") // does not work
setParameter("inclList", "'a', 'b'") // does not work
setParameter("inclList", list) // throws an exception
Je sais que je pourrais tout simplement construire une chaîne de caractères et de construire la totalité de la Requête, mais je voulais éviter la surcharge. Est-il une meilleure manière de faire ceci?
Question connexe: si la Liste est très grande, est-il une bonne manière de construire la requête comme ça?