2011-05-01 60 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));