JPQL stellt die IN-Klausel bereit, um Entitäten basierend auf einem Satz spezifischer Werte zu filtern. Bei Szenarios mit einer beliebigen Anzahl von Werten kann die explizite Angabe jedes Parameters jedoch mühsam und ineffizient werden. In diesem Artikel wird die Möglichkeit untersucht, die Werte für die IN-Klausel mithilfe von Containern wie Arrays, Listen oder Mengen zu erweitern.
Um die Frage direkt zu beantworten, hat JPQL 2.0 die Unterstützung für die Übergabe von Sammlungen als Parameter an die IN-Klausel eingeführt. Dadurch entfällt die Notwendigkeit, jeden Wert manuell anzugeben, und die Codestruktur wird vereinfacht.
Der folgende Java-Code demonstriert diese Funktionalität mithilfe einer Liste:
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(); assertNotNull(actual); assertEquals(2, actual.size());
Es ist erwähnenswert, dass EclipseLink diese Syntax zwar unterstützt , Hibernate 3.5.1 erfordert das Einschließen des Parameters in Klammern (ein bekannter Fehler).
Das obige ist der detaillierte Inhalt vonWie kann ich die IN-Klausel von JPQL mit mehreren Werten effizient nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!