2011-09-05 45 views
4

轉換HQL我有這樣的查詢:「在」限制條件

Query query = session.createQuery("from table1 c where c.colummewhatever =:value and (select p.colummewhatever from table2 p where c.fkidcolumme=p.idcolumme) in (:listPColummewhatever) "); 

有沒有辦法給in限制轉化爲Criteria

回答

0

在我看來,這種查詢可以使用一個簡單的重寫加入:

from Table1 c inner join c.table2 p 
where c.colummewhatever =:value 
and p.colummewhatever in (:listPColummewhatever) 

在翻譯這個標準HQL查詢現在更容易。

這當然假設你有一個表1和表2之間的關聯,但你應該有一個。

+0

以及TKS!....只是一個很小的問題,我不知道怎麼翻譯拼接爲標準......同時,我已發現DetachedCriteria :) – Silvia

+0

您不需要DetachedCriteria來創建連接。你爲什麼不閱讀參考文檔,這些文檔都是在這裏解釋的? http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#querycriteria-associations –

0

使用標準的API應該是事端像這樣...

DetachedCriteria dc = new DetachedCriteria.forClass(Table1.class,"c"); 
dc.createAlias("table2","p") 
dc.add(Restrictions.in("p.colFoo",yourListFoo); 
dc.add(Restrictions.eq("c.col",value); 

List<Table1> = dc.getExecutableCriteria(session).list();