0

Office オブジェクトと Device オブジェクトがあります。オフィスにはデバイスがあり、デバイスはオフィスに属しています。そのため、Office オブジェクトを取得すると Office.Device 参照が設定され、Device オブジェクトにはそれが属する Office オブジェクトが含まれている必要があります。それは私が推測する循環参照です。

これをiBATISでやりたいのですが、やり方がわかりません。

「私を呼び出したばかりのresultMapによって作成されたオブジェクトにこのプロパティを設定する」ことができるresultMapが必要なようです。代わりに、このプロパティ (オブジェクト) に別のクエリ (N+1、私は知っています) を設定するか、結果セットとこの別の resultMap を使用してこのプロパティに設定します。

このシナリオのために別の resultMap を作成してもかまいません。

別の完全に受け入れられる答えは、スキーマに欠陥があるため、iBATIS はこれを行わないというものです。その場合は、他のオプションをいくつか教えてください。

4

2 に答える 2

0

デバイスが、それが存在するオフィスへの循環参照を持つことのみが必要であり、オフィスにデバイスを含めることができ、そのデバイスにさらにオフィスのリストを含めることができるシナリオがない場合。

次に、RowHandler がおそらくその仕事をします。通常の方法で SQL マップを介してオフィスとデバイスを照会し、オフィスとデバイスの関係を満たします。次に、クエリ呼び出しに関連付けられた RowhHandler 内で、デバイスのメンバー内に含まれる office オブジェクトへの参照を設定します。これにより、循環参照が作成され、追加のクエリは不要になります。

于 2010-03-04T07:39:37.690 に答える
0

http://www.javalobby.org/java/forums/t75161.htmlの下部近くに、別の resultMap の結果をプロパティとして含める例があります。私はこれをやったことがありませんが、彼の例からはうまくいくようです。おそらく 4 つの SQL クエリがあります。1 つはオフィス用、もう 1 つは関連付けられたデバイスを取得する関連クエリであり、次に対応するデバイス クエリと関連付けられたオフィスを取得するクエリです。お役に立てれば。

于 2010-02-25T23:41:26.873 に答える