私は現在、クライアント側で GWT を使用し、トランスポート層として RequestFactory を使用し、サーバー側で Apache Tomcat と Hibernate を使用するプロジェクトに取り組んでいます。
私が抱えている問題には、同じサービスによって返されるオブジェクトではないデータベースエンティティの変更をもたらすサービス呼び出しが含まれます。この同じエンティティは、以前のリクエストでクライアントによって既に取得されているため、そのクライアント バージョンは古くなります。
変更されたエンティティ フィールドはクライアントに不要になるため、これは実際には問題になりません。
問題は、クライアントがこの同じエンティティを後続のサービス呼び出しの引数として参照する場合、クライアント側で明示的な変更が行われずに、サーバー側でエンティティを再構築することを担当する requestfactory 内部デコレータ プロシージャが古いものを保持しているように見えることです。データ (エンティティの Set メソッドへの呼び出しを実行することにより、休止状態セッションによって検出され、トランザクションがコミットされたときに更新がスケジュールされます)。
この問題は単なる設計上の欠陥であり、サービス呼び出しの結果としてエンティティ (クライアントによって引き続き使用されている) への変更は、なんらかの方法で明示的に更新する必要がありますか? サーバー サイトの自動手順や別のクライアント呼び出しによって実行される変更によって、同じエンティティが古くなっている可能性があるため、これがすべての状況で機能するとは思いません。
requestfactory は、サービス引数で渡されたエンティティが古くなっていることを (クライアントのバージョンをエンティティの getVersion() メソッドによって返されたものと比較することにより) 検出し、次の形式で警告をスローできるように思われます。例外か何か、または少なくとも古いデータを無視します(私の状況ではこれで十分です)。