JPQL (с Hibernate) добавление полей к запросу, которые не желательны - PullRequest
2 голосов
/ 14 марта 2012

У меня следующая структура сущности.

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 не имеет никакого смысла.

(Я упростил запрос, если есть какая-то опечатка, это не должно иметь никакого влияния на проблему).

1 Ответ

1 голос
/ 14 марта 2012

Попробуйте выполнить следующий запрос:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...