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
698 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!

source:php.cn
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