0

同じサービス (トランザクション) 内の同じエンティティをマージ (更新) した後、子を持つエンティティを選択 (結合) したいと考えています。マージが更新したオブジェクトを返すことは知っていますが、このオブジェクトには更新されたデータがあり、データベースのデータを持つすべてのエンティティではありません。さらに、マージ後にすべての子を持つエンティティを取得しようとして選択を実行すると、更新されたデータのみで更新されたオブジェクトが返されます (残りのフィールドと子エンティティは null です)。

それを解決する方法はありますか?サービスには、コミットする前に正しく実行する必要がある多くのデータベース操作があるため、すべてを同じトランザクションで実行することが必須です。

ありがとう。よろしく。

4

1 に答える 1

0

それはすべて、コードをどのように構成したかによって異なります。あなたが達成しようとしていることについて、より多くの情報/コードを提供できると助かります。

説明から、エンティティとその子の間でカスケード オプションが適切に設定されているかどうかを確認してください。Merge 操作のカスケードを設定できます。これにより、子も更新されます。(注: これは、遅延読み込みの場合にマージ操作の前に子のいずれかがフェッチされた場合にのみ機能します)。

2 番目の質問については、コードをどのように構成したか、および db からデータを取得する方法によって異なります。ただし、理想的には、1 つの要求/作業単位に関連するすべてのデータベース操作を 1 つのトランザクション内で処理する必要があります。

于 2012-05-04T11:49:51.380 に答える