Hibernate HQL Query:如何将Collection设置为Query的命名参数?

时间:2009-02-20 16:26:57

标签: java hibernate hql

给出以下HQL查询:

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

我使用Query对象的:id方法设置setInteger()

我想使用:barList对象设置List,但是查看Hibernate文档和方法列表,我看不到明显的选择。有什么想法吗?

3 个答案:

答案 0 :(得分:90)

使用Query.setParameterList()Javadoc here

有四种变体可供选择。

答案 1 :(得分:31)

我不确定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");

答案 2 :(得分:1)

TorpedoQuery中,它看起来像这样

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