Maison >base de données >tutoriel mysql >La clause IN de JPQL peut-elle gérer directement les collections ?
Clause JPQL IN : déroulement de tableaux, de listes et d'autres collections
Dans Java Persistence Query Language (JPQL), la clause IN vous permet pour spécifier une liste de valeurs spécifiques à des fins de comparaison. Cependant, si vous devez comparer une collection de valeurs au lieu de les lister individuellement, vous vous demandez peut-être s'il existe un moyen de le faire dans JPQL.
Réponse :
Oui, dans JPA 2.0 et versions ultérieures, vous pouvez spécifier une collection dans la clause IN à dérouler selon ses valeurs individuelles. Pour ce faire :
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);
Exemple :
L'exemple suivant dans EclipseLink récupère tous les objets Item dont les noms correspondent à "foo" ou "bar" :
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());
Remarque pour Hibernate :
Avant Hibernate 4, vous devez entourez le paramètre entre parenthèses dans la requête JPQL :
String qlString = "select item from Item item where item.name IN (:names)";
Cependant, il s'agit d'un Extension spécifique à Hibernate et ne fait pas partie de la syntaxe JPQL standard.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!