Jakarta.json.bind.JsonbException: Die Eigenschaft „hibernateLazyInitializer“ kann nicht serialisiert werden.Java

Java-Forum
Guest
 Jakarta.json.bind.JsonbException: Die Eigenschaft „hibernateLazyInitializer“ kann nicht serialisiert werden.

Post by Guest »

Ich versuche, eine träge (Abruftyp) gefüllte Entität, die von JPA (Jakarta Persistence API, Hibernate-Implementierung) kommt, in JSON mit JSON-B (Jakarta JSON Binding, Yasson-Implementierung) zu serialisieren:

Code: Select all

@ManyToOne(fetch = FetchType.LAZY)
private MyJpaEntity o;
Ich weiß, dass die Instanzen von org.hibernate.proxy.LazyInitializer nicht serialisiert werden dürfen. Ich habe diese Problemumgehung mit Jackson verwendet: @JsonIgnoreProperties({"hibernateLazyInitializer", "handler "}), es wurden saubere JSON-Werte erzeugt, die diese Felder nicht enthielten.
Ich habe versucht, mit JSON-B das gleiche Ergebnis zu erzielen, indem ich eine benutzerdefinierte Version verwendet habe PropertyVisibilityStrategy, aber es hat nicht funktioniert, Jakarta JSON versuchte immer noch, den Hibernate-Interceptor zu serialisieren. Es schien jedoch der richtige Weg zu sein, da ich die Eigenschaft ignorieren wollte.
Zuletzt habe ich den Lazy-Initialisierer als Null serialisiert und die JsonbException entfernt , aber die Eigenschaft hibernateLazyInitializer befindet sich immer noch in den JSON-Werten:

Code: Select all

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
}
Gibt es eine clevere Möglichkeit, die Ausnahme und das unerwünschte Feld im resultierenden JSON zu entfernen? Es gibt ein Problem mit diesem Problem, es bietet jedoch keine funktionierende Lösung. Das Ändern des Abruftyps in EAGER ist in meinem Fall keine Option, da dies zu Leistungsproblemen führen würde.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post