私は現在の問題を抱えています: 私の会社には EclipseLink を使用する RCP アプリがありViews
、Editors
現在のオブジェクトが何らかの方法で変更された場合にポイントEditors
するメソッドが呼び出されます。isDirty()
私isDirty()
はこのようなことをします
if(model != null) // model is the current object beign edited
return EntityManagerHelper.contains(model) && getRepository().isDirty();
return false;
何が起こるか: (ProductEditor のような)Editor
を開き、いくつかの属性を変更してから、別のEditor
(ClientEditor のような) を開き、この 2 番目のエディターをダーティーとして開きます (既に変更されているように)。次に、クライアントを編集して保存すると、EclipseLink はクライアントと製品を同じトランザクションで保存します。EclipseLink がセッション全体またはこのようなものをコミットしているようです。
私はこれを読んでいました
作業単位は、クライアントが別のオブジェクト トランザクション スペースでオブジェクトを編集することを保証します。この機能により、クライアントはオブジェクト トランザクションを並行して実行できます。トランザクションがコミットされると、作業ユニットはデータベースで必要な変更を行い、その変更を共有EclipseLinkセッション・キャッシュにマージします。変更されたオブジェクトは、他のすべてのユーザーが使用できます。
UnityOfWork
この動作を変更できますか? もしそうなら、どうすればこのパターンを実装できますか?
私は自分自身を十分に明確にしましたか?誰かがコードや詳細情報を必要としている場合はお知らせください