我有这样的查询:
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 :(得分:0)
在我看来,这个查询可以使用简单的连接重写:
from Table1 c inner join c.table2 p
where c.colummewhatever =:value
and p.colummewhatever in (:listPColummewhatever)
现在,在Criteria中翻译这个HQL查询要容易得多。
这当然假设您在Table1和Table2之间存在关联,但您应该有一个关联。
答案 1 :(得分:0)
使用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();