0

尝试在我的 JAVA 代码中使用 GSON 将 DTO 序列化为 JSON。DTO 扩展了一个抽象类并且还实现了 java.io.Serializable。作为其成员之一的 DTO 具有受保护的 String [][] (二维数组)

收到以下错误,到目前为止还没有找到清晰的帮助。

严重:servlet jsp 的 Servlet.service() 抛出异常 java.lang.UnsupportedOperationException:尝试序列化 java.lang.Class:org.hibernate.proxy.HibernateProxy。忘记注册类型适配器?在 com.google.gson.internal.bind.TypeAdapters$1.write(TypeAdapters.java:62) 在 com.google.gson.internal.bind.TypeAdapters$1.write(TypeAdapters.java:59) 在 com.google.gson .internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) 在 com.google.gson.internal.bind.ArrayTypeAdapter.write(ArrayTypeAdapter.java:93) 在 com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write (TypeAdapterRuntimeTypeWrapper.java:68) 在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:

任何帮助解释或解决它表示赞赏。

4

1 回答 1

0

您应该注意,当您尝试序列化 Hibernate DTO 时,它可能与您最初声明的对象不同。Hibernate 将根据您的 DTO 编写一个代理类,但具有不同的字段来执行与持久性相关的操作。因此,如果您的 DTO 参与任何休眠操作,它将不是您的 DTO,而是代理。您应该在尝试序列化之前将对象的内容复制到新的普通 DTO 中。您可以通过打印对象 getClass() 方法输出来测试这一点,它将是一个代理对象,GSON 不知道如何序列化一些代理字段。希望这可以帮助。

于 2012-11-30T13:35:41.193 回答