2011-11-07 21 views
1

私は、単一の問合せではなくDBに対して複数の問合せを実行することで、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つのマスタークエリとして実行を助けるためにだから私は下記ました+。あなたが1.2のための代替の解決策を手伝ってくれればと感謝します。私は、プロジェクト全体をEclipseLink 2に移行しようとしましたが、今修正するための辛抱強さがないマッピング問題にぶち当たっています。単一のクエリがロードされます。この場合、

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

すべてc年代についてsourceTable関係を:私は

+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に設定し、外部参照APIの@JoinFetch(JoinFetchType.OUTER)も使用しました。正しい結果を得るために、ページネーションを使用していません – Noosphere

0

一つの方法でEclipseLinkのJPAを使用しています

は、たとえば、クエリヒントを使用することです1つではなく、cです。

+0

@unbelli:レスポンスのために、@QueryHint(name = QueryHints.BATCH、value = "c.sourceTable" )とquery.setHint(QueryHints.BATCH、 "c.sourceTable")を入力してください。 sourceTable joinのDBに対して実行されている複数のクエリを観察します。それは私がここでレンガの壁を打ったようなものです – Noosphere

+0

よく、いくつかのコードを投稿し、私たちはそれを修正することができます。 query.setHintは私のために働く。 – unbeli