2011-11-07 34 views
1

我遇到了一個EclipseLink問題,其中針對數據庫而不是單個查詢運行多個查詢。我發現下面,從而提供@BatchFetch批註解決方案線程,以便運行作爲一個主查詢EclipseLink 1.2和BatchFetch

How to do join fetching instead of select fectching with EclipseLink?

How to define the EclipseLink annotation for the following?

但我使用的EclipseLink 1.2和上面標註的等級只能由EclipseLink的2支持+。感謝您能否請求替代1.2的解決方案。我嘗試將整個項目遷移到EclipseLink 2,但是我正在考慮映射問題,目前我沒有耐心解決這個問題。

我使用的EclipseLink的JPA

+0

+1。寫得好。您的工作的良好證據。對不起,我沒有答案。 – Gray

+0

JPA1.2不存在。 JPA1.0存在,JPA2.0存在,JPA2.1正在計劃 – DataNucleus

+0

編輯我的問題 - thx – Noosphere

回答

1

@BatchFetch註解只是將映射設置爲使用批量讀取。您可以使用DescriptorCustomizer並使用ForeignReferenceMapping API在EclipseLink 1.2中執行此操作。

+0

除QueryHint BATCH外,我還將連接列設置爲FETCH LAZY,並使用Foreign Reference API的@JoinFetch(JoinFetchType.OUTER)。我們沒有使用任何分頁,找回正確的結果 – Noosphere

0

一種方法是使用查詢提示,例如:

query.setHint(QueryHints.BATCH, "c.sourceTable"); 

在這種情況下,所有c的的sourceTable關係將被裝入一個單一查詢,而不是每c一個。

+0

@unbelli:thx爲響應,我試過@QueryHint(name = QueryHints.BATCH,value =「c.sourceTable」 )和query.setHint(QueryHints.BATCH,「c.sourceTable」)。觀察對數據庫運行的針對sourceTable連接的多個查詢。這就像我在這裏碰到了一堵磚牆 – Noosphere

+0

,發佈了一些代碼,我們可以修復它。 query.setHint適用於我。 – unbeli