在HQL或SQL中如何将列表传递给IN子句?

45

我通过执行查询得到了List<Strings>,必须将其传递给 IN 子句的值。如何在HQL中传递它们?

我们可以将 List 转换为 Array 并传递它,这并不是问题。

最后,我必须以List<String>ArrayString 的形式将列表传递给 IN 子句。

2个回答

85
from AUTOS a where a.model in (select m.model from MODELS m) 
或者
Query query1 = session.createQuery("select s.id from Salary s where s.salary < 50000 AND s.salary > 49980");
Query query2 = session.createQuery("from Employee e where e.id in (:ids)").setParameterList("ids", query1.list());
query2.list();

4
这是一个好的回答,然而对于空集合无效。 - Jagger
能否用一条查询语句实现?就像在 SQL 中使用子查询一样? - tObi
终于得到了一些东西。 - Karan

3

我知道这已经过了一段时间,而且您一直在尝试将不同查询的值作为查询参数传递,您还可以使用 'elements()' 在HQL中将集合或集合传递给in子句 - 这里是一个简单的示例:

Hibernate查询:集合是否包含某个对象?

这将会做相同的事情...谢谢回复,即使是晚了...对他人有帮助... - Mr.Chowdary

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