我们有两个表Family和Member,这两者之间的关系是Family有一组成员,但成员中没有任何家庭关系。
我希望使用dob和family获取成员,因为我正在使用Hibernate条件API,但我没有得到如何编写连接查询,因为成员没有使用Family实例。所以无法使用FetchMode。有没有其他方法来实现这一目标
提前谢谢。 - Ravi Nikam。答案 0 :(得分:1)
而不是尝试
from Member m join m.family f where f.name = ?
这是不可能的,你可以做相反的
select m from Family f join f.members m where f.name = ?
我知道,这是HQL而不是标准,但这就是我更流利的东西。将这个HQL“翻译”为Criteria应该是微不足道的。
答案 1 :(得分:1)
DetachedCriteria subquery = DetachedCriteria
.forClass(Family.class, "family")
.add(Expression.eq("family.id", family.getId()));
subquery.createAlias("members", "members")
.add(Restrictions.eqProperty("members.id", "m.id"))
.add(Expression.eq("members.DOB",Date));
subquery.setProjection(Property.forName("members.id"));
Criteria crit = session.createCriteria(Member.class, "m")
.add(Subqueries.propertyIn("m.id", subquery));
results = crit.list();
结果包含我要求的成员列表。