鼓童:どのようにセットアップ双方向の関係のための計画をフェッチ?

StackOverflow https://stackoverflow.com/questions/2641239

  •  27-09-2019
  •  | 
  •  

質問

鼓童4.2を実行し、鼓童によって生成される問題非効率的なクエリを有します。そのコレクションは、最初のオブジェクトにbidrectional関係のバックを持っているコレクションを含むオブジェクトを取得するときに発生します。

Class Classroom
{
     List<Student> _students; 
}

Class Student
{
     Classroom _classroom;
}

私たちは計画をフェッチ以下のように設定することによって、教室とそれらに対応する生徒のリストを取得するフェッチ計画を作成する場合:

fetchPlan.addField(Classroom.class、」_学生」);

これは、我々が期待するものである2つのクエリ(教室を取得し、それらの教室内にあるすべての学生を取得する)、になります。

私たちは_classroomフィールドのために私たちのフェッチ計画に教室への参照の背中を含める場合は、fetchPlan.addField行うことによって読み込まれますし(Student.classを、「_classroom」)、これは、追加のX数になりますクエリXは、各教室の生徒の数です。

缶誰もがこの問題を解決する方法について説明しますか?鼓童はすでにオリジナルの教室が、教室でオブジェクトを取得し、各学生のオブジェクトの_classroomフィールドでそれらを設定するためにクエリを実行していますことをポイントにオブジェクトがあります。単純に応じて、各学生のオブジェクトに_classroomフィールドでこれらのオブジェクトを設定し、データベースに戻っていないと私は鼓童を期待してます。

もう一度、ドキュメントが痛んで欠けているが、私は何を読んでから、より効率的にこれを行うことができるはずです。

Note-- EAGER_FETCH.PARALLELがオンになっていると私はオン、オフし、得られたクエリでの違いはありません(クエリおよびデータキャッシュ)キャッシュでこれを試してみました。

役に立ちましたか?

解決

this--この上のOracleのサポートと協力は古道4.2(最新版)の欠陥です。修正が完全にデフォルトのフェッチ・グループ属性を取り出すことである双方向の関係の1対1の側にあるフィールドにJDOメタデータファイルから(いけないだけでtrueまたはfalseに設定します)。したがって、上記の例では、あなたはStudent._classroomフィールドのデフォルトのフェッチ・グループ属性を取り出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top