web-dev-qa-db-fra.com

Hibernate HQL Query: Comment définir une collection comme paramètre nommé d'une requête?

Étant donné la requête HQL suivante:

FROM
    Foo
WHERE
    Id = :id AND
    Bar IN (:barList)

J'ai défini :id À l'aide de la méthode setInteger() de l'objet Query.

Je voudrais définir :barList En utilisant un List d'objets, mais en regardant la documentation Hibernate et la liste des méthodes, je ne vois pas de choix évident à utiliser. Des idées?

64
karlgrz

Utilisez Query.setParameterList(), Javadoc ici .

Vous avez le choix entre quatre variantes.

91
Jason Cohen

Je ne suis pas sûr de HQL, mais dans JPA, vous appelez simplement le setParameter de la requête avec le paramètre et la collection.

Query q = entityManager.createQuery("SELECT p FROM Peron p WHERE name IN (:names)");
q.setParameter("names", names);

names est la collection de noms que vous recherchez

Collection<String> names = new ArrayList<String();
names.add("Joe");
names.add("Jane");
names.add("Bob");
31
Steve Kuo

Dans TorpedoQuery cela ressemble à ceci

Entity from = from(Entity.class);
where(from.getCode()).in("Joe", "Bob");
Query<Entity> select = select(from);
1
xjodoin