1

何らかの理由dto.getObjects()で、セッションで使用すると、オブジェクトにデータが入力されませんが、使用する必要がありますHibernate.initialize(dto.getObjects)

どなたか親切に理由を教えていただけないでしょうか?

副次的な質問です。休止状態には階層クエリがないため、ツリーをトラバースする最良の方法は何ですか。一部のツリーには、200 以上のノードと 4 つのレベルがあります。

その値と外部変数に基づいて、ツリー内の各ノードで一連の更新を実行する必要があります。

例:

node.setB(node.getA() + abc);

コメントはありますか?方法よりも理由を知りたいです。

4

1 に答える 1

1

回答を得る可能性を最大限に高めるには、これを 2 つの質問に分割する必要があります。dto.getObjects() プロキシの初期化に関して: getter を呼び出すだけでは不十分です。Hibernate にプロキシを初期化させるには、コレクションのアクセサまたはミューテータ メソッドのいずれかを呼び出す必要があります。

ここでの問題は、親オブジェクトにクエリを実行すると、Hibernate が介入して、必要な情報または不要な情報のクエリを実行するのではなく、子コレクションをプロキシ オブジェクトに置き換えたことです。プロキシされたコレクションで size() のようなメソッドを呼び出すと、Hibernate はコレクションを実際に使用したいことを認識しているため、DB に実行されてデータをフェッチします。コレクションを熱心に取得したい場合は、そうするように関係を構成する必要があります。これを行うにはいくつかの方法があります。最適な設定を行うには、セットアップに関する次の情報が必要です。

  • エンティティ構成 (XML と注釈)
  • クエリ モード (基準、HQL、または load()/get() の呼び出し)
  • できれば、クエリ方法の短いコード サンプル
于 2012-07-24T23:52:20.667 に答える