Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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 JPQL(使用Hibernate)向查询中添加不需要的字段_Java_Hibernate_Jpa_Jpql - Fatal编程技术网

Java JPQL(使用Hibernate)向查询中添加不需要的字段

Java JPQL(使用Hibernate)向查询中添加不需要的字段,java,hibernate,jpa,jpql,Java,Hibernate,Jpa,Jpql,我有一个如下的实体结构 Venue -- n:1 -- Schedule -- 1:n -- Event 我有一个查询,以获取场馆内所有日程安排的计数: SELECT v, count(s.event) FROM Venue v LEFT JOIN i.schedule s GROUP BY i.id ORDER BY count(s.event) asc; 问题是这个查询永远不会输出没有活动的场馆。Hibernate存在问题,它会生成以下内容: select ..., count(sc

我有一个如下的实体结构

Venue -- n:1 -- Schedule -- 1:n -- Event
我有一个查询,以获取场馆内所有日程安排的计数:

SELECT v, count(s.event) FROM Venue v 
LEFT JOIN i.schedule s 
GROUP BY i.id ORDER BY count(s.event) asc;
问题是这个查询永远不会输出没有活动的场馆。Hibernate存在问题,它会生成以下内容:

select ..., count(schedule4_.event_id) as col_7_0_ 
from Venue venue0_ 
left outer join event_schedule schedule4_ on venue0_.id=schedule4_.venue_id, 
  Event event5_
where schedule4_.event_id=event5_.id and ...
您可以看到,Hibernate试图加入
日程表上的
事件
,即使我没有请求。显然,如果
计划
不存在,则加入
事件
没有任何意义


(我简化了查询,如果有输入错误,应该不会对问题产生任何影响)。

尝试以下查询:

select v.id, count(e.id) from Venue v 
left join v.schedule s 
left join s.events e
group by v.id order by count(e.id) asc;

我已经尝试过了-它只是在schedule4上添加了
left-outer-join-Event-event5\u。Event\u id=event5\u.id,Event-event6\u
,但是查询的其余部分是相同的。请确保将
count(s.Event)
替换为
count(e.id)
,如上所示。如果在查询中不使用任何隐式连接,我不明白为什么它会在from子句中添加这个额外的表。