繁体   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