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

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • MagicofRahat

    MagicofRahat

    13 Temmuz 2007