JPQL IN-Klausel: Arrays, Listen und andere Sammlungen abwickeln
In Java Persistence Query Language (JPQL) ermöglicht Ihnen die IN-Klausel um eine Liste spezifischer Werte zum Vergleich anzugeben. Wenn Sie jedoch eine Sammlung von Werten vergleichen müssen, anstatt sie einzeln aufzulisten, fragen Sie sich möglicherweise, ob es in JPQL eine Möglichkeit gibt, dies zu tun.
Antwort:
Ja, in JPA 2.0 und höher können Sie in der IN-Klausel eine Sammlung angeben, die auf ihre einzelnen Werte entrollt werden soll. Um dies zu tun:
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);
Beispiel:
Das folgende Beispiel in EclipseLink ruft alle Item-Objekte ab, deren Namen stimmen entweder mit „foo“ oder „bar“ überein:
String qlString = "select item from Item item where item.name IN :names"; Query q = em.createQuery(qlString, Item.class); Listnames = Arrays.asList("foo", "bar"); q.setParameter("names", names); List - actual = q.getResultList(); assertNotNull(actual); assertEquals(2, actual.size());
Hinweis für den Ruhezustand:
Vor Hibernate 4 müssen Sie den Parameter in Klammern einschließen die JPQL-Abfrage:
String qlString = "select item from Item item where item.name IN (:names)";
Dies ist jedoch eine Hibernate-spezifische Erweiterung und nicht Teil des Standards JPQL-Syntax.
Das obige ist der detaillierte Inhalt vonKann die IN-Klausel von JPQL Sammlungen direkt verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!