2
我有一个以下的实体结构。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(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试图加入Event
上Schedule
即使我没有要求。显然,如果Schedule
不存在,加入Event
没有任何意义。
(我简化了查询,如果有错别字,它不应该对问题有任何影响)。
我已经尝试过 - 它只是增加了'左外连接上schedule4_.event_id = event5_.id事件event5_,事件event6_',但其余查询是一样的。 – 2012-03-14 11:32:58
确保你用'count(e.id)'替换'count(s.event)',如上所示。如果不在查询中使用任何隐式联接,我不明白为什么它会在from子句中添加此附加表。 – 2012-03-14 12:26:36
辉煌,谢谢! – 2012-03-14 15:47:05