2012-09-29 58 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

這將做同樣的事情..謝謝你的回覆,即使是晚了..對別人有幫助.. –

相關問題