我正在使用 Spring 3 + JPA 2 (hibernate Impl) + Spring MVC 的 contentNegotiationResolver 基于 Json 媒体类型,并在利用 Spring 框架的 org.springframework.web.servlet.view.json.MappingJacksonJsonView 时抛出了以下异常堆栈跟踪
*
org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain:..... )
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.springframewor
*
以下线程中提供的解决方案不起作用(使用 Json AutoDetect)对我不起作用。
序列化 Hibernate 对象时抛出奇怪的 Jackson 异常
提供 Json AutoDetect 并在 getter 方法上显式提供 Json 属性注释不起作用 - 它仍然解析所有属性。此外,我还成功地避免了使用 @JsonIgnore 的 JPA Entity 类的某些属性,这在本质上是一种递归或父/子关系。我也尝试过分离实体类,但没有运气。
在我的实体类中,Jackson 解析器需要做的就是解析三个简单的 String 属性,其余属性用 @JsonIgnore 标记
如果你们中的任何人遇到类似的问题并解决了,请告诉我。