簡體   English   中英

將HQL'in'限制轉換為Criteria

[英]Converting HQL 'in' restriction to Criteria

我有這樣的查詢:

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

使用Criteria 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();

在我看來,這個查詢可以使用簡單的連接重寫:

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

現在,在Criteria中翻譯這個HQL查詢要容易得多。

這當然假設您在Table1和Table2之間有關聯,但您應該有一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM