2017-04-25 11 views
0

Infinispan 6.0.1.Finalを使用しているSpringブートアプリケーションがあります。私は2つのクラスAとBを持っています。BはAを拡張しています。タイプBのオブジェクトを格納しているキャッシュを持っています。今は小さな変更を行い、2つのクラスフィールドとそのgetter/setterをBからAに移動し、両方のクラスのシリアルID。アプリケーションを起動して、キャッシュからタイプBのオブジェクトを取得すると、移動したフィールドはnullとして表示されます。Infinispan:クラスが変更され、デシリアライズが動作しない

私の質問です:キャッシュは、タイプBのオブジェクト(Bの古いバージョン)を含んでいます。私はクラスBを変更しましたが、意味論の観点からは、移動したフィールドが親クラスにあるため、クラスは同じフィールドとメソッドのままです。クラスを変更する前と同じように、デシリアライズを行うことは可能ですか?

答えて

1

オブジェクトのクラス定義を変更したときに、Infinispanからすべてのデータを削除できることがわかっている場合にのみ、Javaシリアル化を使用してください。ポータブルオブジェクト表現については

、いるProtobufエンコードされたオブジェクトを使用します。

あなたは、スキーマが更新されたときにデータが進化する方法のよりよい制御を持っているProtobufで。ちなみにInfinispanはリモートクエリやその他のいくつかの高度な機能をサポートする基本要件であるため、非常にうまくサポートしています。

関連する問題