Hinzufügen der IN-Klauselliste zu einer JPA-Abfrage

Ich gebaut habe, eine NamedQuery, die wie folgt aussieht:

@NamedQuery(name = "EventLog.viewDatesInclude",
        query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
        + "el.timeMark <= :dateTo AND "
        + "el.name IN (:inclList)")

Was ich will zu tun ist, füllen Sie die parameter :inclList mit einer Liste der Elemente, anstelle von einem Punkt. Zum Beispiel, wenn ich ein new List<String>() { "a", "b", "c" } wie Schaffe ich es, dass in der :inclList parameter? Es läßt mich nur Verschlüssele einer Zeichenkette. Zum Beispiel:

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 erstellen Sie eine Zeichenfolge, und bauen die gesamte Abfrage aus, aber ich wollte, den overhead zu vermeiden. Gibt es einen besseren Weg, dies zu tun?

Verwandte Frage: wenn die Liste sehr groß ist, ist es eine gute Möglichkeit, das Gebäude Abfrage wie?

InformationsquelleAutor der Frage AlanObject | 2010-12-07

Schreibe einen Kommentar