Ich habe eine NamedQuery erstellt, die so aussieht:
@NamedQuery(name = "EventLog.viewDatesInclude",
query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
+ "el.timeMark <= :dateTo AND "
+ "el.name IN (:inclList)")
Ich möchte den Parameter: includeList mit einer Liste von Elementen anstelle eines Elements ausfüllen. Wenn ich zum Beispiel eine habe, new List<String>() { "a", "b", "c" }
wie erhalte ich das im Parameter: inclList? Ich kann nur eine Zeichenfolge codieren. Beispielsweise:
setParameter("inclList", "a") // works
setParameter("inclList", "a, b") // does not work
setParameter("inclList", "'a', 'b'") // does not work
setParameter("inclList", list) // throws an exception
Ich weiß, ich könnte einfach einen String erstellen und daraus die gesamte Abfrage erstellen, aber ich wollte den Overhead vermeiden. Gibt es einen besseren Weg, dies zu tun?
Verwandte Frage: Wenn die Liste sehr groß ist, gibt es eine gute Möglichkeit, eine solche Abfrage zu erstellen?