Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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 HQL连接:基于2个连接检索对象(连接所需的路径!)_Java_Xml_Hibernate_Join - Fatal编程技术网

Java HQL连接:基于2个连接检索对象(连接所需的路径!)

Java HQL连接:基于2个连接检索对象(连接所需的路径!),java,xml,hibernate,join,Java,Xml,Hibernate,Join,我试图跨越3个对象加入,但遇到了一个问题。这是我的想法。在Java中,我试图获取某个对象的列表: List<TypeX> typeXList = session.createQuery( "from X as x " + "join Y as y " + "where y.z in (:zList)") .setParameterList(":zList", zList) .list(); 然而,我认为它们是映

我试图跨越3个对象加入,但遇到了一个问题。这是我的想法。在Java中,我试图获取某个对象的列表:

List<TypeX> typeXList =
    session.createQuery(
        "from X as x " +
        "join Y as y " +
        "where y.z in (:zList)")
    .setParameterList(":zList", zList)
    .list();
然而,我认为它们是映射的,在我的xml配置中

<class name="X" table="x">
    <cache usage="read-write"/>
    <id name="id" column="id">
        <generator class="native"/>
    </id>
    <property name="yId" column="y_id"/>
    <many-to-one name="y" column="y_id"
        insert="false" update="false" class="Y" lazy="proxy"/>
    <!-- I need both of these for other reasons, existing code etc -->
    ...
</class>

...
现在是Y班

<class name="Y" table="y">
    <cache usage="read-write"/>
    <id name="id" column="id">
        <generator class="native"/>
    </id>
    <many-to-one name="z" column="z_id" class="Z" lazy="false"/>
    ...
</class>

...
和Z


...

我想这些就足够根据Z的列表检索X了。我做错了什么?

我想一定是
连接X.y,其中

它实际上是y.z,这里涉及两个连接,一个来自代表投票(X)的对象,投票(y)的对象,然后是y(z)的提供者。想想亚马逊上的一个产品评级,X=星级评级对象,Y=被评级的产品,Z=产品的供应商。在本例中,我们试图获得供应商列表的所有投票。@DavidWilliams如果您有一个示例,说明如何在hqlten@Jens中使用jin 2列(项目),我想我已经在上面的XML中提供了所有必需的设置。这不正确吗?@DavidWilliams你写的
join Y as Y
我认为这是错误的,如果我理解的例子是正确的,那一定是
join x.Y
Awesome,做到了,谢谢,在这种情况下,我把它全部放在where
where x.Y.z in(:zs)
<class name="Y" table="y">
    <cache usage="read-write"/>
    <id name="id" column="id">
        <generator class="native"/>
    </id>
    <many-to-one name="z" column="z_id" class="Z" lazy="false"/>
    ...
</class>
<class name="Z" table="z">
    <cache usage="read-write"/>
    <id name="id" column="z_id">
        <generator class="native"/>
    </id>
    ...
</class>