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?让我们将讨论转移到您打开的讨论主题: