Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Hibernate 联接获取多个实体失败-查询指定的联接获取,但所获取关联的所有者不在选择列表中_Hibernate_Jpa_Join_Jpql - Fatal编程技术网

Hibernate 联接获取多个实体失败-查询指定的联接获取,但所获取关联的所有者不在选择列表中

Hibernate 联接获取多个实体失败-查询指定的联接获取,但所获取关联的所有者不在选择列表中,hibernate,jpa,join,jpql,Hibernate,Jpa,Join,Jpql,我有这样一个问题: em.createQuery("SELECT " + "new burro.model.Receptacle(r.id, r.merchant, r.action, o, d, r.portDestination, COUNT(p.id)) " + "FROM products p " + "JOIN p.receptacle

我有这样一个问题:

    em.createQuery("SELECT "
            + "new burro.model.Receptacle(r.id, r.merchant, r.action, o, d, r.portDestination, COUNT(p.id)) "
            + "FROM products p  "
            + "JOIN p.receptacle r "
            + "JOIN FETCH r.origin o "
            + "JOIN FETCH r.destination d "
            + "WHERE r.closeDate IS NULL "
            + "AND r.dispatchDate is NULL "
            + "AND o.id = :origin "
            + "GROUP BY r.id, r.merchant, r.action, r.origin, r.destination, r.portDestination", Receptacle.class)
            .setParameter("origin", issuer.getId())
            .getResultList()
我得到了这个错误:

java.lang.IllegalArgumentException: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=o,role=burro.model.Receptacle.origin,tableName=locations,tableAlias=location2_,origin=receptacles receptacle1_,columns={receptacle1_.origin,className=burro.model.Location}}]
我知道我可以通过从连接中删除FETCH来避免这个错误,但这会引入一个我正试图避免的N+1问题。我的目标是在同一个查询中获取所有容器、产品和位置


我应该如何更改查询,以便在同一查询中获取r、p、r.origin和r.destination?

让我们将讨论转移到您打开的讨论主题: