Hibernate HQL Query: как установить коллекцию в качестве именованного параметра запроса?

Учитывая следующий запрос HQL:

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

Я устанавливаю :id с помощью метода объекта setInteger() объекта Query.

Я хотел бы установить :barList с помощью List объектов, но, глядя на документацию Hibernate и список методов, я не вижу очевидного выбора. Любые идеи?

Ответ 1

Используйте Query.setParameterList(), Javadoc здесь.

Существует четыре варианта выбора.

Ответ 2

Я не уверен в HQL, но в JPA вы просто вызываете запрос setParameter с параметром и коллекцией.

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

где names - это набор имен, которые вы ищете

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

Ответ 3

В TorpedoQuery он выглядит следующим образом

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