SORU
5 Aralık 2010, Pazar


Garip Jackson istisna Hazırda nesne seri hale getirilirken, atılan

Jackson nasıl düzelteceğimi bilmiyorum garip bir durum üretiliyor. Bahar, Hazırda bekleme ve Jackson kullanıyorum.

Zaten tembel yükleme sorunu neden olduğunu düşündüm, ama şöyle: Jackson çeşitli özellikleri işlemek için DEĞİL anlatmak için önlemler almış

@JsonIgnoreProperties({ "sentMessages", "receivedMessages", "educationFacility" })
public class Director extends UserAccount implements EducationFacilityUser {
   ....
}

Tüm diğer kullanıcı hesabı sınıfları için aynı şeyi de yaptım.

İşte bu özel durumu oluşturuldu:

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: 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)

Buna neyin sebep olduğunu görmek için daha fazla bilgi nasıl alabilirim bir öneriniz var mı? Herkes bunu düzeltmek nasıl biliyor?

DÜZENLEME:Bu getHander keşfettim() diğer*() yöntemleri proxy nesnesi var. GRR!! Jackson vekil hakkında herhangi bir işlem olmadığını söyleyebilirim hiçbir yolu yoktur, ya da sol mıyım? Bu JSON ortaya döküyor bu yöntem, yalnızca belirli koşullar altında çöküyor çünkü gerçekten çok garip, her zaman değil. Yine de,* almak için son gün (proxy) nesne yöntemleri.

Kenara: Vekiller kötüdür. Onlar Jackson bozabilir, equals() ve normal Java programlama birçok diğer parçaları. Hazırda tamamen: / hendek için cazip duyuyorum

CEVAP
4 Ocak 2011, Salı


Hazırda proxy nesnesi aracılığıyla, tembel yükleme ile benzer bir sorunu vardı. Sınıf ile, özel özellikleri lazyloaded olan açıklama ekleyerek, etrafında var:

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

Bu açıklama için JSON serileştirme tatili proxy nesne özellikleri ekleyebilirsiniz sanırım.

Avoid Jackson serialization on non fetched lazy objects

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChrisCrossMedia

    ChrisCrossMe

    17 EYLÜL 2009
  • Easy Learn Tutorial

    Easy Learn T

    10 Kasım 2012
  • jeffisthecoolguy

    jeffisthecoo

    17 HAZİRAN 2013