Java 在OAuth2中反序列化身份验证对象时出现问题

Java 在OAuth2中反序列化身份验证对象时出现问题,java,spring,hibernate,serialization,oauth-2.0,Java,Spring,Hibernate,Serialization,Oauth 2.0,我在旧项目中实现了OAuth2,比如说v1,使用Spring+Hibernate3。在当前的新实现中,比如说v2,我们用Hibernate4升级了Hibernate。 在这两种情况下,数据库是相同的。在身份验证对象中,我们持久化了一个实体类,比如User.java,它包括 @ManyToMany @LazyCollection(LazyCollectionOption.FALSE) private List<Authority> authorities; 这是因为v1有hibern

我在旧项目中实现了OAuth2,比如说v1,使用Spring+Hibernate3。在当前的新实现中,比如说v2,我们用Hibernate4升级了Hibernate。 在这两种情况下,数据库是相同的。在身份验证对象中,我们持久化了一个实体类,比如User.java,它包括

@ManyToMany
@LazyCollection(LazyCollectionOption.FALSE)
private List<Authority> authorities;
这是因为v1有hibernate 3,它的PersistentBag包结构为org.hibernate.collection.PersistentBag。 但是v2有Hibernate4,它改变了这个包结构org.hibernate.collection.internal.PersistentBag

由于旧身份验证对象的反序列化在v2中失败


有人能给我推荐一个好方法吗?

你在v2项目中包括哪些hibernate依赖项?@dMcNavish:hibernate core(版本4.3.11.Final)、hibernate entitymanager(版本4.3.11.Final)、hibernate envers(版本4.3.11.Final)和hibernate validato(版本5.2.4.Final)。
java.lang.ClassNotFoundException: org.hibernate.collection.PersistentBag
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:626)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2000)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1924)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)