Попытка сериализировать сущность с помощью ленивого типа - PullRequest
0 голосов
/ 11 января 2019

Я боролся с этим исключением часами, если не днями, в сущности, которая ссылается на слишком много других сущностей, и я решил аннотировать сущность аннотацией LAZY, чтобы улучшить прирост производительности.

С аннотацией типа LAZY fetch я столкнулся с этим исключением при получении данных json

No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer

Где-то на трассировке стека я тоже нашел эту ошибку

(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) ); nested exception is com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class 

Я погуглил и попытался отключить исключение, добавив это в сущности и сериализовать, чтобы получить json с приведенным ниже, но, к сожалению, не смог получить json после попытки

@JsonIgnoreProperties({"hibernateLazyInitializer","userId"})
class Books{
//here is the relationship
@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "userId")
    private User userId;

Кроме того, я попытался отключить исключение с помощью application.properties, но оно все еще сохраняется после следующих настроек

spring.jackson.serialization.eager-serializer-fetch=true
spring.jackson.serialization.fail-on-empty-beans=false
spring.jackson.serialization.fail-on-self-references=false
spring.jackson.serialization.fail-on-unwrapped-type-identifiers=false

Пожалуйста, есть способ, которым я могу настроить и обработать это исключение в файле ApplicationStartUp.java. Пожалуйста, кто-нибудь может помочь мне выбраться из тьмы в этом

1 Ответ

0 голосов
/ 11 января 2019

Похоже, что есть много решений вашей проблемы ... вы можете проверить эту ссылку , чтобы увидеть их ...

Обычно я бы рекомендовал подход DTO, но иногда это решение подразумевает много изменений в коде ...

Как я вижу в вашем вопросе, вы следуете аннотационному подходу ... если я понял решения, предложенные в приведенной мной ссылке, то:

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

Должен быть помещен в вашу User сущность, а не в вашу Book сущность! (Попробуйте это, но предварительно восстановите конфигурацию пружины, удалив свойства Джексона)

Надеюсь, эта помощь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...