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

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009