0

2 つの異なる Web サービスでキャッシュするために、Coherence で Hibernate L2 キャッシュを使用しています。

シナリオ

  • 最初の Web サービスには、Employee5 つのフィールドを持つエンティティ クラスがあります
  • 2 番目の Web サービスには同じエンティティ クラスEmployeeがありますが、3 つのフィールドがあります。

どちらも同じテーブル/スキーマを指しており、パッケージ階層も同じです。

の新しいリクエストemployeeId=1が 2 番目の Web サービスに来ると、データベースから値を取得し、3 つの列をキャッシュします。他の 2 を null のままにします。

リクエストemployeeId=1が最初の Web サービスから来ると、3 つの列を指定してキャッシュから直接フェッチし、データベースでは 2 つの列に null 以外の値が含まれていても、残りの 2 つを null として返します。

これらの列をデータベースから強制的に取得する方法はありますか?

すでに試みられたアプローチ

  1. 両方の Web サービスの列を同じままにしておくと、問題はなくなりますが、これは私のシナリオでは受け入れられる解決策ではありません。
  2. 別のserialVersionを追加しようとしましたが、機能しません。
  3. 完全修飾名を保持することは別の方法で機能しますが、これにより、手動によるエビクションの実行にオーバーヘッドが追加されます
4

1 に答える 1

0

これにはEvolvableインターフェイスを使用できるはずです。これにより、前方互換性と後方互換性の両方を持つグリッドにオブジェクトを挿入できます。Second Webservice が First よりも低いバージョンを設定していることを確認する必要があるだけです。

于 2013-10-20T19:03:30.793 に答える