0
對象Site
具有對象集合Tag
。對象Tag
有財產Title
。如何使用Hibernate Criteria API選擇標籤爲'A'和'B'的所有網站?如何使用「和」條件篩選相關集合(Hibernate標準API)
對象Site
具有對象集合Tag
。對象Tag
有財產Title
。如何使用Hibernate Criteria API選擇標籤爲'A'和'B'的所有網站?如何使用「和」條件篩選相關集合(Hibernate標準API)
我假設你想生成的本地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));