1

他のエンティティとの多数の OneToMany 関係を含むエンティティがあります。これらのエンティティの 1 つは、実際にはツリー構造 (3 つのレベル) です。

(サーブレット呼び出しで) オブジェクトを更新すると、ツリー構造を含むすべてのオブジェクト フィールドが更新されますが、ルート レベル (第 1 レベル) でのみ更新されます。更新したら、オブジェクトのマージを行います。

ちょっと遅いですが、うまく動作します。実行されている実際の SQL トランザクションを表示するように JPA ロギングを設定すると、ツリー構造が常にデータベースで完全に再生成されていることがわかりました (つまり、すべてのオブジェクトの削除と挿入)。他のフィールドには当てはまりません。つまり、変更されたフィールドのみが更新されます。あたかも eclipselink (私は eclipselink を使用しています) がツリー構造を毎回新しいものと見なしているかのようです。

これは正常な動作ですか?マージする前に、ツリーをスキャンして各ツリー ノードを更新する必要がありますか?

4

1 に答える 1

0

ツリー構造の ID (コードを含む) は何ですか?

新しい ID を割り当てていますか、それとも各マージの前に ID を null にしていますか?

orphanRemoval を使用していますか?

変更をどのようにマージするか (コードを含める) に最も問題があります。

于 2013-04-10T13:43:03.523 に答える