他のエンティティとの多数の OneToMany 関係を含むエンティティがあります。これらのエンティティの 1 つは、実際にはツリー構造 (3 つのレベル) です。
(サーブレット呼び出しで) オブジェクトを更新すると、ツリー構造を含むすべてのオブジェクト フィールドが更新されますが、ルート レベル (第 1 レベル) でのみ更新されます。更新したら、オブジェクトのマージを行います。
ちょっと遅いですが、うまく動作します。実行されている実際の SQL トランザクションを表示するように JPA ロギングを設定すると、ツリー構造が常にデータベースで完全に再生成されていることがわかりました (つまり、すべてのオブジェクトの削除と挿入)。他のフィールドには当てはまりません。つまり、変更されたフィールドのみが更新されます。あたかも eclipselink (私は eclipselink を使用しています) がツリー構造を毎回新しいものと見なしているかのようです。
これは正常な動作ですか?マージする前に、ツリーをスキャンして各ツリー ノードを更新する必要がありますか?