Maison >base de données >tutoriel mysql >Comment puis-je utiliser efficacement la clause IN de JPQL avec plusieurs valeurs ?

Comment puis-je utiliser efficacement la clause IN de JPQL avec plusieurs valeurs ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-30 18:10:101021parcourir

How Can I Efficiently Use JPQL's IN Clause with Multiple Values?

Extension de la clause JPQL IN : utilisation de listes et de collections

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn