Hibernate HQL Query: Как установить коллекцию в качестве именованного параметра запроса? - PullRequest
64 голосов
/ 20 февраля 2009

С учетом следующего запроса HQL:

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

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

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

Ответы [ 3 ]

90 голосов
/ 20 февраля 2009

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

Есть четыре варианта выбора.

31 голосов
/ 20 февраля 2009

Я не уверен насчет 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");
1 голос
/ 01 ноября 2011

В TorpedoQuery это выглядит так

Entity from = from(Entity.class);
where(from.getCode()).in("Joe", "Bob");
Query<Entity> select = select(from);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...