1

Spring 3 + JPA 2 (hibernate Impl) + Json メディア タイプに基づく Spring MVC の contentNegotiationResolver を使用しており、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 パーサーが行う必要があるのは、いくつかの 3 つの単純な文字列属性を解析することだけであり、残りの属性は @JsonIgnore でマークされています。

同様の問題に直面し、解決した方がいらっしゃいましたらお知らせください。

4

0 に答える 0