有關我的earlier question,我想確保所有的子對象都被加載,因爲我有多個線程可能需要訪問數據(從而避免延遲加載例外)。我明白這樣做的方法是在查詢中使用「fetch」關鍵字(EJB QL)。就像這樣:休眠(JPA)如何做一個渴望的查詢,加載所有的子對象
select distinct o from Order o left join fetch o.orderLines
假設有Order
類有一組在它OrderLines
的典範。
我的問題是,「不同」的關鍵字似乎是需要的,否則我似乎找回Order
爲每個OrderLine
。我做對了嗎?
也許更重要的是,有沒有辦法拉動所有的小孩物體,不管它有多深?我們有大約10-15個班級,對於服務器,我們將需要加載所有內容......我避免使用FetchType.EAGER
,因爲這意味着它始終渴望並且特別是Web前端加載所有內容 - 但也許這是要走的路 - 是你做了什麼?我似乎記得我們之前嘗試過這樣做,然後獲得了非常慢的網頁 - 但也許這意味着我們應該使用二級緩存?
是的,這是正確的答案 – 2008-09-16 11:13:53
這傢伙需要在運行時改變策略。 – Nullpo 2012-04-19 05:41:45