我在SpringBootAPI工作。这是我第一次遇到这个问题。
我通过存储库的findbyid函数加载不同的公司对象。所有公司对象都加载正确,只有一个除外。这一个加载javassistlazyinitalizer类型的处理程序属性。其余属性均为默认值。在目标节点的handler对象中,是否正确加载了我想要的对象。
所以我发现这是一种hibernate延迟加载,因为当我想用getter访问属性时,它工作正常。
**我的问题是,我想在最后用gson序列化对象,在序列化过程中出现以下错误:
尝试序列化java.lang.class:org.hibernate.proxy.hibernateproxy。忘记注册类型适配器?
我明白为什么会发生这种错误。但是我不明白为什么只有一个不同的company对象被加载为lazy(或者是hibernateproxy)那么,避免hibernateproxy分别序列化对象的最聪明的方法是什么呢
感谢您的回答:)
2条答案
按热度按时间llmtgqce1#
原因可能是您对正确加载的对象执行了一些操作。例如,如果调用加载的持久类的任何方法(不需要getter),hibernate将初始化所有代理。
对加载错误的对象不做任何处理。
o4hqfura2#
这个适配器是我的解决方案。
}
您必须将其添加到gsonbuilder中。
此问题的答案无法序列化对象,原因是hibernateproxy