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));