過去の他の人によって書かれ、デシリアライズの問題が発生しているいくつかの休止状態のコードを更新しようとしています。元のコードが書かれた方法は、それがserialVersionUIDを明示的に宣言し、ちょうどSerializableインタフェースを実装していませんでした -Hibernateの逆シリアル化の問題
public class SamplePOJO implements Serializable {
を今、私はテーブルに新しい列を追加し、このオブジェクトにマップしようとしています。 I:
- 変更された表
- は、新しいStringオブジェクトとそのためのゲッター/セッター が含まれるように、オブジェクトを更新し、
- が持つdbテーブルの列をマップするために.hbmファイルを更新し、新しい列を作成しますオブジェクト。
私は、コンパイル後にそれを実行したときしかし、私は次のエラーを取得する -
"Error while deserializing from byte[]., caused by x.y.SamplePOJO; local class incompatible: stream classdesc serialVersionUID = 7997933458932550222, local class serialVersionUID = <other number internally auto generated as source didn't explicitly mention serialVersionUID>"
私は上記のエラーでスローされたものと一致するのserialVersionUIDが含まれるようにコードを更新した場合、それはどのなしで実行問題。
私が見つけた情報に基づいて、最も一般的な原因は、クライアントとサーバーの異なる休止状態のジャーに見えます。ただし、同じ休止状態のjarを使用しているため、ここでは該当しません。例外の間にスローされるserialVersionUIDを特に言及することなくこの問題を解決する方法がある場合、誰かを助けることができますか?また、私がこのアプローチに固執しなければならない場合、コードが別の環境(qa/prod)に移動すると、他の環境で直列化される方法に応じて異なるserialVersionUIDが期待されますか?
いずれか/すべてのヘルプをありがとう!
ありがとうございました。あなたは私の疑いを明確にしました。 – JUG