Java 在以下情况下如何在hibernate条件中使用join
我们有两个表Family和Member,这两个表之间的关系是Family中有一组成员,但是Member中没有任何家庭关系 我想使用dob和family获取成员,因为我使用的是Hibernate标准API,但我不知道如何编写连接查询,因为成员没有family实例。因此无法使用FetchMode。还有其他方法可以做到这一点吗 提前谢谢。Java 在以下情况下如何在hibernate条件中使用join,java,hibernate,criteria,Java,Hibernate,Criteria,我们有两个表Family和Member,这两个表之间的关系是Family中有一组成员,但是Member中没有任何家庭关系 我想使用dob和family获取成员,因为我使用的是Hibernate标准API,但我不知道如何编写连接查询,因为成员没有family实例。因此无法使用FetchMode。还有其他方法可以做到这一点吗 提前谢谢。 -拉维·尼卡姆。而不是试图去做 from Member m join m.family f where f.name = ? 这是不可能的,你可以做完全相反的事情
-拉维·尼卡姆。而不是试图去做
from Member m join m.family f where f.name = ?
这是不可能的,你可以做完全相反的事情
select m from Family f join f.members m where f.name = ?
我知道,这不是HQL标准,但这是我更流利的标准。不过,将此HQL“翻译”为标准应该很简单。谢谢大家,我已经与我的一位同事解决了这个问题,如下所示
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();
结果有我要求的成员名单 不太清楚您要选择什么-单个成员/成员列表/包含成员集合的家庭?你能澄清一下吗?另外,若你们们可以发布你们们的映射,或者至少更好地描述它们,这会有所帮助。是的,我想从数据库中搜索使用DOB和family的成员。我想要一个匹配的成员为给定的家庭谁是查询结果的顶部。使用HQL将很容易,如下所述,但我希望它通过标准,为此我并没有家庭作为成员的财产,而是在家庭中有一组成员。