Hibernate HQL查询:如何将集合设置为查询的命名参数?

68

给定以下 HQL 查询:

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

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

我想使用一个对象列表设置:barList,但是在查看Hibernate文档和方法列表时,我找不到明显的选择。有任何想法吗?

3个回答

93

使用Query.setParameterList()可查阅Javadoc

有四个变体供选择。


谢谢您指出这个问题!我在查看JavaDoc时完全忽略了它。 - karlgrz
2
D:哦,不好了,链接坏掉了(这在 JBoss 文档中非常典型且令人痛苦)。 - Matt Ball
2
只有在使用Hibernate Query对象时才有效,如果导入了javax.persistence.Query则无效。这只是我的个人意见。 - Niel de Wet

33

我不确定 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
TorpedoQuery中,它看起来像这样。
Entity from = from(Entity.class);
where(from.getCode()).in("Joe", "Bob");
Query<Entity> select = select(from);

7
那怎么回答这个问题呢?如果您的项目链接没有直接解决问题,请不要发布链接。 - Mat
1
它生成一个带有in条件的hql查询。 - xjodoin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接