Jakarta.json.bind.JsonbException: невозможно сериализовать свойство hibernateLazyInitializerJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Jakarta.json.bind.JsonbException: невозможно сериализовать свойство hibernateLazyInitializer

Сообщение Anonymous »

Я пытаюсь сериализовать лениво (тип выборки) заполняемый объект, поступающий из JPA (Jakarta Persistence API, реализация Hibernate) в JSON с помощью JSON-B (привязка Jakarta JSON, реализация Yasson):

Код: Выделить всё

@ManyToOne(fetch = FetchType.LAZY)
private MyJpaEntity o;
Я знаю, что экземпляры org.hibernate.proxy.LazyInitializer не должны быть сериализованы, я использовал этот обходной путь с Джексоном: @JsonIgnoreProperties({"hibernateLazyInitializer", "handler "}) он выдавал чистые значения JSON, не содержащие этих полей.
Я пытался получить тот же результат с JSON-B, используя собственный PropertyVisibilityStrategy, но это не сработало, Jakarta JSON все еще пыталась сериализовать перехватчик Hibernate. Однако мне показалось, что это правильный путь, поскольку я хотел игнорировать это свойство.
Наконец, я сериализовал ленивый инициализатор как null, я избавился от JsonbException , но свойство hibernateLazyInitializer все еще находится в значениях JSON:

Код: Выделить всё

public static final class DumbLazyInitializerSerializer implements JsonbSerializer {
@Override
public void serialize(final LazyInitializer li, final JsonGenerator jg, final SerializationContext sc) {
jg.writeNull();
}
}

try (final Jsonb jsonb = JsonbBuilder.create(new JsonbConfig().withSerializers(new DumbLazyInitializerSerializer()))) {
// do your own stuff
}
Есть ли разумный способ избавиться от исключения и нежелательного поля в результирующем JSON? В этой проблеме есть проблема, но она не дает рабочего решения. Изменение типа выборки на EAGER в моем случае не вариант, так как это может вызвать некоторые проблемы с производительностью.

Подробнее здесь: https://stackoverflow.com/questions/793 ... atelazyini
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»