2012-09-29 27 views
32

通过执行查询得到List<Strings>。这必须传递给IN子句值的另一个查询。如何通过HQL将列表传递给HQL或SQL中的IN子句?

我们可以将List转换为Array并且可以通过它,这不是问题。

最后,我必须List<String>ArrayString形式传递的列表中IN条款。

回答

66
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(); 
+0

这是否也适用于复合ID? – rexdefuror

+2

这是一个很好的答案,但不适用于空集合。 – Jagger

+0

是否可以用1个查询来完成?像在SQL与子查询? – tObi

3

我知道它已经有一段时间,你一直在试图通过不同的查询作为queryParameter的价值,你也可以通过设置或集合在子句中HQL 'elements()' - 这里有一个简单的例子: Hibernate query: does a Set contains a certain Object?

+0

这将做同样的事情..谢谢你的回复,即使是晚了..对别人有帮助.. –

相关问题