J'ai construit une NamedQuery qui ressemble à ceci:Additionnant dans la clause Liste à une Assemblée parlementaire paritaire de requête
@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 l'obtenir dans le paramètre: inclList? Cela me permet seulement de codifier une 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 pouvais construire une chaîne et construire l'ensemble requête à partir, mais je voulais éviter les frais généraux. Existe-t-il une meilleure façon de le faire?
Question connexe: si la liste est très grande, y a-t-il un bon moyen de créer une requête comme celle-là?
Ce fut, merci. – AlanObject
Non ... J'ai mon cas son contraire. Si j'utilise: inclList alors ça ne marche pas. Si j'utilise IN (: inclList) alors cela fonctionne. –
Notez également: le type de votre param doit être une collection (pas un tableau) d'objets. Les objets doivent correspondre au type du champ. .toString() ne remplace pas la classe String – dube