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
Freigeben: 2024-12-28 16:11:32
Original
685 Leute haben es durchsucht

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();
Nach dem Login kopieren

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";
Nach dem Login kopieren

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)";
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage