En supposant que je souhaite écrire la requête HQL suivante:
FROM Cat c WHERE c.id IN (1,2,3)
quelle est la bonne façon d'écrire cela comme une requête paramétrée, par ex.
FROM Cat c WHERE c.id IN (?)
Je ne sais pas comment faire cela avec un paramètre positionnel, mais si vous pouvez utiliser des paramètres nommés au lieu de positionnels, alors le paramètre nommé peut être placé entre crochets et setParameterList méthode de Query interface peut être utilisé pour lier la liste de valeurs à ce paramètre.
...
Query query = session.createQuery("FROM Cat c WHERE c.id IN (:ids)");
query.setParameterList("ids", listOfIds);
...
Les anciennes versions d'Hibernate peuvent ne pas avoir la méthode setParameterList
sur Query
. Vous pouvez toujours appeler setParameter("ids", listOfIds);
sur l'ancienne pour le même effet.