JPQL fournit la clause IN pour filtrer les entités en fonction d'un ensemble de valeurs spécifiques. Cependant, pour les scénarios impliquant un nombre arbitraire de valeurs, spécifier explicitement chaque paramètre peut devenir fastidieux et inefficace. Cet article explore la possibilité d'étendre les valeurs de la clause IN à l'aide de conteneurs tels que des tableaux, des listes ou des ensembles.
Pour répondre directement à la question, JPQL 2.0 a introduit la prise en charge de la transmission de collections en tant que paramètres à la clause IN. Cela élimine le besoin de spécifier manuellement chaque valeur et simplifie la structure du code.
Le code Java suivant illustre cette fonctionnalité à l'aide d'une 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());
Il convient de noter que même si EclipseLink prend en charge cette syntaxe , Hibernate 3.5.1 nécessite de mettre le paramètre entre parenthèses (un bug connu).
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!