Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠序列化失败_Java_Hibernate_Jboss7.x - Fatal编程技术网

Java 休眠序列化失败

Java 休眠序列化失败,java,hibernate,jboss7.x,Java,Hibernate,Jboss7.x,我有一个Java客户机-服务器应用程序,前端是Swing,后端是JBoss。它是在JBoss6.4和Hibernate4.2下运行的,现在它在更新到JBoss7.2和Hibernate5.3.7后失败了。当客户端试图序列化对象以将其发送回服务器时,我遇到了一个异常 Caused by: java.io.StreamCorruptedException: serialVersionUID does not match! at org.jboss.marshalling.AbstractClassR

我有一个Java客户机-服务器应用程序,前端是Swing,后端是JBoss。它是在JBoss6.4和Hibernate4.2下运行的,现在它在更新到JBoss7.2和Hibernate5.3.7后失败了。当客户端试图序列化对象以将其发送回服务器时,我遇到了一个异常

Caused by: java.io.StreamCorruptedException: serialVersionUID does not match!
at org.jboss.marshalling.AbstractClassResolver.resolveClass(AbstractClassResolver.java:108)
    ...
Caused by: an exception which occurred:
    in field com.company.app.model.Vehicle.parts
    in object com.company.app.model.Vehicle@75e4da10
    in object of type com.company.app.model.Vehicle
错误似乎来自零件集合,该集合是未延迟加载的零件实体集合。Hibernate使用自己的SerialVersionUID创建代理对象,我了解到这可能会导致此错误

还要注意,即使零件集合为空,也会发生这种情况

在将车辆对象发送到客户端之前,我正在从会话中逐出车辆对象。我尝试在parts collection和Vehicle对象上调用Hibernate.unproxy,但没有任何区别。通过创建一个新列表,将零件添加到该列表中,然后用该新列表替换车辆对象中的零件列表,我终于能够让它工作了。这看起来像是一个黑客,但当有很多实体具有多个关系时,这是一个真正的痛苦

我阅读了一篇关于建议使用数据传输对象而不发送Hibernate实体对象本身的答案。但是,在以前版本的Hibernate下,这种方法工作得很好。我已经阅读了Hibernate 5.3文档和迁移指南,没有看到任何可能导致这种情况的更改

有什么想法吗?我应该试试看