Я пытаюсь сериализовать лениво (тип выборки) населенную часть, поступающую из JPA (API Persistence Jakarta, внедрение Hibernate) в JSON с JSON-B (Джакарта JSON, обязательство, внедрение Yasson): < /p>
Код: Выделить всё
@ManyToOne(fetch = FetchType.LAZY)
private MyJpaEntity o;
Я знаю, что экземпляры org.hibernate.proxy.lazyinitializer не должны быть сериализованы, я использовал этот обходной путь с Джексоном: @jsonignoreProperties ({"hibernatelazyInitializer", " "}) , он дал чистые значения JSON, не содержащие эти поля. Это не сработало, Джакарта Джсон все еще пытался сериализовать перехватчика Hibernate. Однако, казалось, это был путь, так как я хотел игнорировать свойство. , но недвижимость 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
}
< /code>
Есть ли разумный способ избавиться от исключения и нежелательного поля в полученном JSON? В этой проблеме есть проблема, но она не обеспечивает рабочего решения. Изменение типа Fetch на Eager
не является опцией в моем случае, так как это вызвало бы некоторые проблемы с производительностью.
Подробнее здесь:
https://stackoverflow.com/questions/793 ... atelazyini