Джексон выбрасывает странное исключение, которое я не знаю, как исправить.Я использую Spring, Hibernate и Jackson.
Я уже считал, что проблема связана с отложенной загрузкой, но я принял меры, чтобы Джексон НЕ обрабатывал различные свойства следующим образом:
@JsonIgnoreProperties({ "sentMessages", "receivedMessages", "educationFacility" })
public class Director extends UserAccount implements EducationFacilityUser {
....
}
Я сделал то же самое для всех других подклассов UserAccount.
Вот исключение:
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)
Предложения о том, как получить больше информации, чтобы увидетьчто вызывает это?Кто-нибудь знает, как это исправить?
РЕДАКТИРОВАТЬ: Я обнаружил, что getHander () и другие методы get * () существуют на прокси-объекте.GRR !!Можно ли как-то сказать Джексону, чтобы он ничего не обрабатывал на прокси, или я сол?Это действительно странно, потому что метод, который выплевывает JSON, падает только при определенных обстоятельствах, а не постоянно.Тем не менее, это связано с методами get * () прокси-объекта.
В сторону: прокси - это зло.Они нарушают Джексона, equals () и многие другие части обычного Java-программирования.У меня возникает соблазн полностью отказаться от Hibernate: /