2012-05-22 40 views
1

我工作的EclipseLink和性能方面的原因,我們已經設置了FetchType.lazy的地方,我們有一對多的關係。現在,這個persitence在第一層還有其他業務邏輯,然後還有一些EAR使用了第一層的persitence。在獲取這些對象時,我遇到了elipselink拋出ClassCast異常的問題。稍微深入研究這個問題就會發現,這是因爲多個耳朵的延遲加載。抓取嵌套的對象時FetchType是LAZY

現在我的想法是創建一個方法,在第1層將由另一隻耳朵的,如果他們想要加載的所有對象即預先加載機制進行調用。我想知道如何在eclipselink中實現這個功能?

回答

0

EAR不應該像你在做的那樣依賴彼此。你將用類加載器創建一系列問題。

如果您有多個服務或交互的web應用,他們應該在同一個耳朵。如果它們不是,那麼將通用jar文件複製到不同的耳朵。

+0

謝謝,我已經有關於妥善包裝EAR但此刻,我正在尋找一個解決方案,我上面提到的問題,學長討論這一具體問題。 –

1

的EclipseLink限定負載組,其允許被迫加載關係。 複製API也可用於強制加載。

見, http://wiki.eclipse.org/EclipseLink/Examples/JPA/AttributeGroup

+0

你能舉個例子嗎?我一直在尋找文檔,我很困惑。想象一下,在我的'ClassA'中有一個屬性,它是'個人'。 'classA'和'persons'具有oneToMany關係,即一個類可以有很多人,並且它已經被配置爲'FetchType = lazy'。我將如何加載它? 'Query.setHint(QueryHints.Loadgroup,「person」);'? (忽略編譯/ api特定錯誤)。 –