[英]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.