Ich habe eine bidirektionale Beziehung von vielen zu vielen in meinen Entitäten. Siehe das folgende Beispiel:
%Vor%Wenn ich versuche, dies zu JSON zu serialisieren, bekomme ich die folgende Ausnahme: '
"java.lang.IllegalArgumentException: Kann verwaltete / zurück nicht verarbeiten Verweis 'COLLABORATION_TAG': Rückverweistyp (java.util.Set) nicht kompatibel mit verwaltetem Typ (foo.Collaboration).
Eigentlich weiß ich, dass dies sinnvoll ist, weil das javadoc explizit angibt, dass Sie @JsonBackReference nicht für Collections verwenden können. Meine Frage ist, wie soll ich dieses Problem angehen? Was ich für jetzt getan habe, ist das Entfernen der @ JsonManagedReference Annotation auf der übergeordneten Seite und das Hinzufügen des @ JsonIgnore auf der untergeordneten Seite. Könnte mir jemand sagen, was die Nebenwirkungen dieses Ansatzes sind? Gibt es noch andere Vorschläge?
sehr praktische Schnittstelle Implementierung wird in Jackson 2 Bibliothek als
zur Verfügung gestellt %Vor%in maven
%Vor%Ich habe eine bidirektionale Beziehung von vielen zu vielen in meinen Entitäten. Siehe das folgende Beispiel:
%Vor%Wenn ich versuche, dies zu JSON zu serialisieren, bekomme ich die folgende Ausnahme: '
"java.lang.IllegalArgumentException: Kann verwaltete / zurück nicht verarbeiten Verweis 'COLLABORATION_TAG': Rückverweistyp (java.util.Set) nicht kompatibel mit verwaltetem Typ (foo.Collaboration).
Eigentlich weiß ich, dass dies sinnvoll ist, weil das javadoc explizit angibt, dass Sie @JsonBackReference nicht für Collections verwenden können. Meine Frage ist, wie soll ich dieses Problem angehen? Was ich für jetzt getan habe, ist das Entfernen der @ JsonManagedReference Annotation auf der übergeordneten Seite und das Hinzufügen des @ JsonIgnore auf der untergeordneten Seite. Könnte mir jemand sagen, was die Nebenwirkungen dieses Ansatzes sind? Gibt es noch andere Vorschläge?
Ich habe die folgende Lösung implementiert.
Ein Ende der Beziehung wird als das übergeordnete Element betrachtet. Es benötigt keine Jackson Annotation.
%Vor%Die andere Seite der Beziehung wird wie folgt implementiert.
%Vor%Ich verwende einen benutzerdefinierten Serializer, um sicherzustellen, dass keine zyklischen Referenzen auftreten. Der Serializer könnte so implementiert werden:
%Vor%Dieser Serializer zeigt nur eine begrenzte Anzahl von Eigenschaften der Collaboration-Entität an. Da die Eigenschaft "Tags" weggelassen wird, treten keine zyklischen Referenzen auf.
Eine gute Lektüre über dieses Thema finden Sie hier . Es erklärt alle Möglichkeiten, wenn Sie ein ähnliches Szenario haben.
Tags und Links java json jackson many-to-many