0
我在DB幾個表:多個連接取休眠
的遊戲表:有這樣的列TEAM1,TEAM2。 兩欄均引用另一張表 團隊表:與玩家表具有一對多關係。
玩家表:與技巧表有一對一參考。
作爲團隊實體中的實體我收集了FetchType設置爲LAZY的玩家。
我正在進行選擇查詢以獲得許多遊戲。 無論設置爲獲取類型,LAZY還是EAGER,獲得所有遊戲實體都需要相當長的時間,因爲它會加載兩個團隊,並且對於所有團隊來說,它會逐個加載衆多玩家,如從DB日誌中看到的。最後爲每個玩家加載它的技能。
我想把它作爲一個查詢(不是像現在這樣做的一個一個查詢)。但要做到這一點,我需要在JPQL中正確地進行聯合提取查詢。
我不知道該怎麼做。
在純SQL中的模擬查詢看起來像:
select ... from games
inner join teams as t1 on team_id1 = t1.id
inner join players as ps1 on ps1.team_id = team_id1
inner join skills as sk1 on sk1.players_id = ps1.id
inner join teams as t2 on team_id2 = t2.id
inner join players as ps2 on ps2.team_id = team_id2
inner join skills as sk2 on sk2.players_id = ps2.id
where ...
我可以做一些內部的JQPL連接,但不知道如何告訴Hibernate加載每個集合的對象的技能。