私は、既存のレガシーシステム用のシンプルなdiffシステムを実装しようとしています。私は複数の潜在的なオブジェクト状態間の差異をJaversを使用して計算し、それらを直列化バージョンで永続化しています。私はオブジェクトに変更をコミットしたくないだけで、私の差分を追跡します。ジャバースディフュールをデシリアライズすることはできますか?
以前にシリアライズされたDiffでDiffオブジェクトを再作成する方法はありますか?私はがを変更したくない、ベースエンティティを持っている
:
は、ここに私のユースケースです。システムは同じエンティティの新しいバージョンを受け取り、それらが私の基本エンティティとどのように異なるかを知りたい。私はJavers Diffを使ってその違いを見つけて表示することができますが、明らかにdiffをシリアライズすることでそれらを保持しますが、シリアライズされたdiffを介してDBから復元することはできません。
同じ目的を達成する方法の1つは、変更された代替エンティティ全体を永続させ、実行時にDiffを計算することですが、いくつかのフィールドしか存在しない場合は、かわった。私のエンティティの代替バージョンを永続させることは、ユニークなキーのために私の既存のシステムを混乱させるでしょう。
こんにちは@Solvemonは、あなたの成功を共有していただきありがとうございます。どうぞ、JsonConverterのインスタンスをどう取得しましたか? 'JsonConverterBuilder'から取得しようとしていますが、実行時に失敗します:' org.javers.core.diff.Changeクラスの引数なしのコンストラクタを呼び出せません。 –
** FIXED ** - OK、私と同じことをする(つまり、 'new JsonConverterBuilder()。build()'を呼び出す)ために、このタイプのGsonを使用してInstanceCreatorを登録するとこの問題が解決される可能性があります。それをしないでください。 :)単に 'JAVERS.getJsonConverter()'を呼び出します。そうすれば、永続性があなたのために働くでしょう。 –