68

Given the following HQL Query:

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

I set :id using the Query object's setInteger() method.

I would like to set :barList using a List of objects, but looking at the Hibernate documentation and list of methods I cannot see an obvious choice of which to use. Any ideas?

Mat
  • 202,337
  • 40
  • 393
  • 406
karlgrz
  • 14,485
  • 12
  • 47
  • 58

3 Answers3

93

Use Query.setParameterList(), Javadoc here.

There are four variants to pick from.

Baztoune
  • 1,215
  • 1
  • 16
  • 20
Jason Cohen
  • 81,399
  • 26
  • 107
  • 114
33

I'm not sure about HQL, but in JPA you just call the query's setParameter with the parameter and collection.

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

where names is the collection of names you're searching for

Collection<String> names = new ArrayList<String();
names.add("Joe");
names.add("Jane");
names.add("Bob");
Steve Kuo
  • 61,876
  • 75
  • 195
  • 257
1

In TorpedoQuery it look like this

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