2011-09-28 32 views
1

我看到許多以前的問題 - 但不完全如此。我理解Hibernates懶惰的抓取策略,開放式會話等等,但是我似乎找不到解決這個簡單的小問題的方法,無論如何,我的協會都會被懶惰地提取出來。禁用Hibernate延遲提取多對一的關聯

我不使用鑑於公開會議,作爲我的web應用程序是建立一個沒有了,現在是複雜,「遷移」 ......

比方說,我們有引用鏈,說一個< - b < - ç< - d - >電子
往往不是,取一個也意味着我們需要b,C和d。所以這些被設置爲總是急切地被提取(通過在hibernate映射文件中指定lazy=false)。這工作!

但是,我們現在還需要總是熱切地取得協會e,每次d被提取。由於e對執行d的某些邏輯操作至關重要。

而這正是它停止工作...... Ëd作爲多到一個協會d相關。將其設置爲lazy=false不會做的伎倆,它仍然無法正常初始化,並且訪問屬性上Ëd導致LazyInitialisationException。

我期望這會奏效嗎? lazy屬性在hibernate文件中使用hibernate v。3.2.6和Spring 2.5.6版本指定。

希望有人能澄清事情對我來說...

通過一切手段,請參見另一篇文章,如果你找到一個。我似乎無法找到一個涵蓋這...

回答

3

許多-to-one關聯的lazy屬性設置在類元素:

<class name="E" laze="false"> 
... 
</class> 

<class name="D"> 
    <many-to-one name="e" .../> 
</class> 

的lazy屬性上多到一個有意思與任何財產相同:它允許lazy loading of single properties,只有當所有者本身是代理時纔有效。這不是你可以用在你的案例中,它默認情況下被設置爲false。

+0

看,現在我錯過了! 但是,那麼引用實例不可能指定引用的關聯應該被熱切地提取?這是一個爲所有人定義的問題,還是根本不存在? 但感謝!它肯定的工作:) – Hoof