2011-05-01 55 views

回答

2

我假设你想生成的本地SQL看起来像下面这样:

select * 
from Site st 
where st.id in (
    select tg.site_id 
    from Tag tg 
    where tg.title in ('A', 'B') 
) 

我认为以下标准例子会给你你想要的结果(您可能需要编辑属性名)。

DetachedCriteria d = DetachedCriteria.forClass(Tag.class, "tg"); 
d.setProjection(Projections.projectionList().add(Projections.property("tg.siteId"))); 
d.add(Restrictions.in("tg.title", new String[]{"A", "B"})); 

Criteria criteria = session.createCriteria(Site.class, "st"); 
criteria.add(Subqueries.propertyIn("st.id", d));