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

Comment puis-je utiliser efficacement la clause IN de JPQL avec les collections ?

Patricia Arquette
Libérer: 2024-12-28 16:11:32
original
773 Les gens l'ont consulté

How Can I Use JPQL's IN Clause with Collections Effectively?

Clause JPQL IN pour les collections

Lors de la récupération de données basées sur un ensemble de valeurs à l'aide d'une clause IN en SQL, il est pratique de transmettre un tableau ou une collection comme valeurs à vérifier. JPQL prend également en charge la clause IN, mais nécessite initialement que chaque paramètre soit spécifié individuellement (par exemple, "in (:in1, :in2, :in3)").

Solution pour JPA 2.0 et versions ultérieures

Dans JPA 2.0 et versions ultérieures, il est possible de passer une Collection en paramètre à la clause IN. Voici un exemple :

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();
Copier après la connexion

Gestion des collections dans Hibernate 3.5.1 et versions antérieures

Pour Hibernate 3.5.1 et versions antérieures, il y a une légère bizarrerie lors de l'utilisation d'une collection paramètre dans la clause IN. La requête JPQL suivante est valide :

String qlString = "select item from Item item where item.name IN :names";
Copier après la connexion

Cependant, Hibernate ne gère pas correctement cette syntaxe. Pour contourner ce problème, entourez le paramètre entre parenthèses :

String qlString = "select item from Item item where item.name IN (:names)";
Copier après la connexion

Cette incohérence est suivie comme HHH-5126.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal