当序列化Hibernate对象时,抛出了一个奇怪的Jackson异常。
当序列化Hibernate对象时,抛出了一个奇怪的Jackson异常。
Jackson抛出了一个奇怪的异常,我不知道如何修复。我正在使用Spring,Hibernate和Jackson。
我已经考虑到延迟加载导致了问题,但我已经采取措施告诉Jackson不要处理各种属性,如下所示:
@JsonIgnoreProperties({"sentMessages", "receivedMessages", "educationFacility"}) public class Director extends UserAccount implements EducationFacilityUser { .... }
我对所有其他UserAccount子类也做了同样的事情。
这是抛出的异常:
org.codehaus.jackson.map.JsonMappingException:找不到类org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer的序列化器,也没有发现创建BeanSerializer的属性(要避免异常,请禁用SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS))(通过引用链:java.util.ArrayList [46]->jobprep.domain.educationfacility.Director_$$_javassist_2 ["handler"]) at org.codehaus.jackson.map.ser.StdSerializerProvider $ 1.serialize(StdSerializerProvider.java: 62) at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java: 268) at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java: 146) at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java: 118) at org.codehaus.jackson.map.ser.ContainerSerializers $ IndexedListSerializer.serializeContents(ContainerSerializers.java: 236) at org.codehaus.jackson.map.ser.ContainerSerializers $ IndexedListSerializer.serializeContents(ContainerSerializers.java: 189) at org.codehaus.jackson.map.ser.ContainerSerializers $ AsArraySerializer.serialize(ContainerSerializers.java: 111) at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java: 296) at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java: 224) at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java: 925) at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.writeInternal(MappingJacksonHttpMessageConverter.java: 153)
有什么建议可以获得更多信息以查看是什么导致了这个问题?有人知道如何修复吗?
编辑:我发现代理对象上存在getHander()和其他get *()方法。烦人!我是否可以告诉Jackson不要处理代理上的任何东西,还是我没有解决方案?这真的很奇怪,因为生成JSON的方法只在某些情况下崩溃,而不是每次都崩溃。尽管如此,这是由代理对象上的get *()方法引起的。
顺便说一下:代理是邪恶的。它们破坏了Jackson,equals()和许多其他常规Java编程的部分。我动心要完全放弃Hibernate:/