Heim >Datenbank >MySQL-Tutorial >Wie kann ich die IN-Klausel von JPQL effektiv mit Sammlungen verwenden?

Wie kann ich die IN-Klausel von JPQL effektiv mit Sammlungen verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-28 16:11:32715Durchsuche

How Can I Use JPQL's IN Clause with Collections Effectively?

JPQL IN-Klausel für Sammlungen

Beim Abrufen von Daten basierend auf einer Reihe von Werten mithilfe einer IN-Klausel in SQL ist es praktisch, eine zu übergeben Array oder eine Sammlung als zu prüfende Werte. JPQL unterstützt auch die IN-Klausel, erfordert jedoch zunächst die individuelle Angabe jedes Parameters (z. B. „in (:in1, :in2, :in3)“).

Lösung für JPA 2.0 und höher

In JPA 2.0 und höher ist es möglich, eine Sammlung als Parameter an die IN-Klausel zu übergeben. Hier ist ein Beispiel:

String qlString = "select item from Item item where item.name IN :names";
Query q = em.createQuery(qlString, Item.class);

List<String> names = Arrays.asList("foo", "bar");

q.setParameter("names", names);
List<Item> actual = q.getResultList();

Umgang mit Sammlungen in Hibernate 3.5.1 und früher

Für Hibernate 3.5.1 und früher gibt es eine kleine Besonderheit bei der Verwendung einer Sammlung Parameter in der IN-Klausel. Die folgende JPQL-Abfrage ist gültig:

String qlString = "select item from Item item where item.name IN :names";

Hibernate verarbeitet diese Syntax jedoch nicht korrekt. Um dieses Problem zu umgehen, setzen Sie den Parameter in Klammern:

String qlString = "select item from Item item where item.name IN (:names)";

Diese Inkonsistenz wird als HHH-5126 verfolgt.

Das obige ist der detaillierte Inhalt vonWie kann ich die IN-Klausel von JPQL effektiv mit Sammlungen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn