76 votes

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

En supposant que je veuille écrire la requête HQL suivante:

 FROM Cat c WHERE c.id IN (1,2,3)
 

quelle est la bonne façon d'écrire ceci en tant que requête paramétrée, par exemple

 FROM Cat c WHERE c.id IN (?)
 

127voto

Matej Points 2427

Je ne sais pas comment faire cela avec le paramètre de position, mais si vous pouvez utiliser des paramètres nommés à la place de position, alors le nom de paramètre peuvent être placés à l'intérieur des crochets et setParameterList méthode de Requête interface peut être utilisée pour lier la liste de valeurs pour ce paramètre.

...
Query query = session.createQuery("FROM Cat c WHERE c.id IN (:ids)");
query.setParameterList("ids", listOfIds);
...

11voto

Travis Points 1664

Les anciennes versions de mise en veille prolongée peuvent ne pas avoir le setParameterList méthode sur Query . Vous pouvez toujours appeler setParameter("ids", listOfIds); sur l’ancien pour le même effet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X