J'ai construit un 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, c'est remplir le paramètre: inclList avec une liste d'éléments au lieu d'un élément. Par exemple, si j'ai un new List<String>() { "a", "b", "c" }
comment puis-je obtenir cela dans le paramètre: inclList? Cela ne me permet de codifier qu'une seule chaîne. 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 simplement créer une chaîne et construire toute la requête à partir de cela, mais je voulais éviter la surcharge. Existe-t-il une meilleure façon de le faire?
Question connexe: si la liste est très grande, existe-t-il un bon moyen de créer une requête comme celle-ci?