2012-08-30 150 views
0

是否可以防止僅在一個集合上進行延遲加載?假設我們有對象A,它有兩個集合(例如@OneToMany)。他們都是懶惰。我想在第二個集合上執行一些類似驅逐的操作,但仍然有可能爲第二個集合獲取數據,因此驅逐整個父對象不是我的解決方案。防止休眠中的延遲加載

+0

一些醜陋的解決方案進入我的腦海 - 設置一個空值。但我寧願防止懶惰的抓取,並有懶惰的初始化異常,以防有人想要初始化它。但我不認爲這種部分驅逐是可能的,不是嗎? –

+0

當不應該初始化的懶惰集合被訪問時,你期望發生什麼?這聽起來很奇怪,想要在一個集合上進行延遲加載而不是另一個。你能分享一個用例嗎? – Firo

+0

這很難解釋。這是應用程序中設計的結果,現在不容易改變。因爲對象用在hibernate會話中,許多開發人員更改了代碼,所以我想確保它們不會獲取會導致某些難以分析錯誤的集合 - 所以我寧願確保空指針異常將會被拋出或其他異常。正如我所說,很難解釋所有原因。我知道我們可以使用一些中間層或DTO,但在這種情況下,這是不可能的。 –

回答

0

好的,我假設設置空值不是這樣一個不好的解決方案。這意味着 - 「我不想在這個系列中有任何東西」。但是如果有人知道更多關於潛在阻止懶惰的可能性,那麼只有一個代理/集合可以很好地在這裏獲得這些信息。

問候。