web-dev-qa-db-fra.com

Bonne manière d'écrire un HQL dans une (...) requête

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 (?)
74
Robert Munteanu

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);
...
127
Matej

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.

10
Travis