我们有一个使用大量序列化的生产系统。基本上要做的是将一个名为 ProcessData 的对象作为字节数组存储在 jbpm 数据库中。因此这是序列化的。
考虑以下对象。
public class ProcessData implements Serializable {
private static final long serialVersionUID = -4859440951531011062L;
public void getX() {
//not important
}
}
现在假设我们将这个对象作为字节数组存储在 JBPM 数据库中,并且我们在生产中使用它。
现在稍后我们想用新数据升级这个 ProcessData 对象
public class ProcessData implements Serializable {
private static final long serialVersionUID = -4859440951531011062L;
public void getX() {
//not important
}
public void getY() {
//not important
}
}
现在的问题是当 JBPM 加载old
存储的 ProcessData 对象时,我们得到一个异常
Caused by: java.io.InvalidClassException: my.package.ProcessData; local class incompatible: stream classdesc serialVersionUID = 6651422488035743444, local class serialVersionUID = -7966721901330644987
现在我的问题是,我们该如何解决这个问题?我们如何才能读取序列化对象并在这个新类中对其进行转换。甚至可能吗?请记住,我们对 JBPM 库的控制有限。