Utilisation de la clause IN dans une requête SQL native
Nous essayons de générer dynamiquement une clause pour un natif sql de la requête pour renvoyer une entité JPA. Hibernate est notre fournisseur JPA. Notre code ressemble à ceci.
@NamedQuery(
name="fooQuery",
queryString="select f from Foo f where f.status in (?1)"
)
....
Query q = entityManager.createNamedQuery("fooQuery");
q.setParameter(1, "('NEW','OLD')");
return q.getResultList();
Cela ne fonctionne pas, la clause ne reconnaît pas les valeurs transmises par l'intermédiaire de cette manière. Personne ne sait d'une solution à ce problème?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
JPA soutient nommé paramètres de la liste, dans votre cas:
Je recommande de ne pas utiliser un paramètre composite pour votre requête, mais de le découper individuellement. Ne spécifiez pas
('NEW','OLD')
; spécifier des paramètres de'NEW'
et'OLD'
. Qui peut aider.Cela, bien sûr, peut causer des problèmes si votre paramètre longueurs ne sont pas définis.