Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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中嵌套createAlias()_Java_Hibernate_Criteria - Fatal编程技术网

Java 在Hibernate中嵌套createAlias()

Java 在Hibernate中嵌套createAlias(),java,hibernate,criteria,Java,Hibernate,Criteria,我必须使用Hibernate进行特定的查询 下面的课程只是一个简单的例子,让您更容易理解我的场景和目标。我在写这篇文章时编了一个例子,我希望我没有犯错误(无论如何不要注意错误:D) 但我不能再进一步了。我需要像这样的东西: Criteria criteria = session.createCriteria(Father.class); criteria.createAlias("sonList", "sonListAlias"); criteria.add(Restric

我必须使用Hibernate进行特定的查询

下面的课程只是一个简单的例子,让您更容易理解我的场景和目标。我在写这篇文章时编了一个例子,我希望我没有犯错误(无论如何不要注意错误:D)

但我不能再进一步了。我需要像这样的东西:

Criteria criteria = session.createCriteria(Father.class);           
criteria.createAlias("sonList", "sonListAlias");
criteria.add(Restrictions.in("sonListAlias.toyList.featureList.unisex", unisex));
但是,当然,这不是正确的方法


首先,请不要使用不必要的映射属性。我的意思是
targetEntity=Father.class
referencedColumnName=“id”,name=“Father”
。不要使用像
sonList
这样的名字,只使用
sons

Criteria criteria = session.createCriteria(Father.class);           
criteria.createAlias("sonList", "son");
criteria.createAlias("son.toyList", "toy");
criteria.createAlias("toy.featureList", "feature");
criteria.add(Restrictions.idEq(1));
criteria.add(Restrictions.eq("feature.unisex", true));
如果您需要急切地获取
sonList
,您可以尝试使用
setFetchMode(“sonList”,FetchMode.JOIN)

如果你需要

“永远”找一个父亲,只让他的儿子有玩具,有玩具 Feature.unisex=true

您可以尝试使用
@Filter

但我认为,如果您在单独的请求中加载
sonList
,效果会更好

    Criteria criteria = session.createCriteria(Son.class);           
    criteria.createAlias("father", "father");
    criteria.createAlias("toyList", "toy");
    criteria.createAlias("toy.featureList", "feature");
    criteria.add(Restrictions.eq("father.id", 1));
    criteria.add(Restrictions.eq("feature.unisex", true));

谢谢你,伙计,你帮了我很大的忙;你几乎解决了我所有的问题。但可能我在我的帖子里不够清楚。通过你的提问,我得到了一个父亲,只有当一个父亲有一个儿子,有一个玩具,作为特征。中性=真。我真正需要的是“永远”有一个父亲,只让他的儿子们拥有有特点的玩具。不知道我是否清楚:D
Criteria criteria = session.createCriteria(Father.class);           
criteria.createAlias("sonList", "son");
criteria.createAlias("son.toyList", "toy");
criteria.createAlias("toy.featureList", "feature");
criteria.add(Restrictions.idEq(1));
criteria.add(Restrictions.eq("feature.unisex", true));
    Criteria criteria = session.createCriteria(Son.class);           
    criteria.createAlias("father", "father");
    criteria.createAlias("toyList", "toy");
    criteria.createAlias("toy.featureList", "feature");
    criteria.add(Restrictions.eq("father.id", 1));
    criteria.add(Restrictions.eq("feature.unisex", true));