2
私は以下のエンティティ構造を持っています。JPQL(Hibernateを使用)は、クエリにフィールドを追加することが望ましくありません。
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は私がそれを要求しなかったにもかかわらず、Schedule
にEvent
に参加しようとしていること、
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 ...
あなたが見ることができます。問題は、次の生成休止状態、です。明らかにSchedule
が存在しない場合は、Event
に参加することは意味をなさない。
(私はいくつかのタイプミスがあった場合、問題に影響しないはずです)。
- それはちょうど '左外部結合schedule4_.event_id = event5_.idのイベントevent5_、イベントevent6_'が、クエリの残りの部分を追加します同じです。 –
上記のように、 'count(s.event)'を 'count(e.id)'に置き換えてください。クエリで暗黙的な結合を使用しないと、この追加テーブルがfrom句に追加される理由がわかりません。 –
華麗な、ありがとう! –