Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在以下情况下如何在hibernate条件中使用join_Java_Hibernate_Criteria - Fatal编程技术网

Java 在以下情况下如何在hibernate条件中使用join

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 = ? 这是不可能的,你可以做完全相反的事情

我们有两个表Family和Member,这两个表之间的关系是Family中有一组成员,但是Member中没有任何家庭关系

我想使用dob和family获取成员,因为我使用的是Hibernate标准API,但我不知道如何编写连接查询,因为成员没有family实例。因此无法使用FetchMode。还有其他方法可以做到这一点吗

提前谢谢。
-拉维·尼卡姆。

而不是试图去做

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将很容易,如下所述,但我希望它通过标准,为此我并没有家庭作为成员的财产,而是在家庭中有一组成员。