Ich möchte den Unterschied zwischen @JsonManagedReference
und @JsonBackReference
in Jackson wissen?JsonManagedReference vs JsonBackReference
Antwort
@JsonManagedReference ist der vordere Teil der Referenz - derjenige, der normal serialisiert wird. @JsonBackReference ist der hintere Teil von Referenz - es wird aus der Serialisierung weggelassen.
So hängen sie wirklich auf die Richtung Ihrer Beziehung
public class User {
public int id;
public String name;
@JsonBackReference
public List<Item> userItems;
}
public class Item {
public int id;
public String itemName;
@JsonManagedReference
public User owner;
}
@JsonManagedReference
und @JsonBackReference
ausgelegt sind, diese Zwei-Wege-Verknüpfung zwischen den Feldern zu handhaben, eine für Eltern Rolle, die andere für Kinder Rolle.
Für das Problem zu vermeiden, werden Gestänge so gehandhabt, dass die Eigenschaft mit @JsonManagedReference Anmerkung kommentierte normalerweise behandelt wird (in der Regel serialisiert, keine Sonderbehandlung für die Deserialisierung) und die Eigenschaft mit @JsonBackReference Anmerkung kommentierte ist nicht serialisiert; und während der Deserialisierung wird der Wert auf die Instanz gesetzt, die den Link "verwaltet" (vorwärts) hat.
Wenn @JsonBackReference-Annotation nicht serialisiert ist, wie wird es dann "deserialisiert", ohne zuerst serialisiert zu werden? –
- @JsonManagedReference -> Leitet den vorderen Teil des Referenz und die durch diese Anmerkung gekennzeichneten Felder sind diejenigen, die
- @JsonBackReference Serialized bekommen -> Leitet den umgekehrten Teil des Referenz und die Felder/Sammlungen, die mit dieser Anmerkung markiert sind, werden nicht serialisiert.
Anwendungsfall: Sie haben eine ein-oder n-viele-Beziehungen in Ihren Entitäten/Tabellen und nicht die oben mit Fehlern wie
Infinite Recursion and hence stackoverflow - > Could not write content: Infinite recursion (StackOverflowError)
Die obigen Fehler führen würde tritt auf, weil Jackson (oder etwas Ähnliches) versucht, beide Enden der Beziehung zu serialisieren und endet in einer Rekursion.
@JsonIgnore führt ähnliche Funktionen durch, aber die oben genannten Anmerkungen sind vorzuziehen.
Ich ziehe@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = Long.class)
wo Eigenschaft der Name des Primärschlüsselfeld ist und der Umfang ist Typ es
- 1. @jsonbackreference nicht bindet Beziehung
- 2. Jackson mit bidirektionalen Eins-zu-viele-Beziehung verwechselt
- 3. Zyklische Referenzen in einer bidirektionalen Beziehung viele zu viele
- 4. One to Many-Feld wird nicht in JPA aktualisiert
- 5. Wie wird der Zirkelverweis in der JSON-Serialisierung aufgelöst?
- 6. Klasse vs Paket vs Modul vs Komponente vs Container vs Service vs Plattform in Java Welt
- 7. Opa vs Dart vs Haxe vs Coffee
- 8. Akkumulieren vs falten vs reduzieren vs komprimieren
- 9. body.scrollTop vs documentElement.scrollTop vs window.pagYOffset vs window.scrollY
- 10. ACE vs Boost vs Poco vs wxWidgets
- 11. Inline vs __inline vs __inline__ vs __forceinline?
- 12. Metaphon vs Levenshtein vs Soundex vs Hamming
- 13. Standort vs GeoPoint vs 1E6 vs Aufladen
- 14. VS 2013 MSTest vs nUnit vs xUnit
- 15. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 16. SpiderMonkey vs JavaScriptCore vs?
- 17. & vs * und | vs +
- 18. Bundler vs RVM vs Gems vs RubyGems vs Gemsets vs System Ruby
- 19. Mathematica: Unevaluated vs Aufschieben vs Halten vs Holdform vs HoldAllComplete vs etc etc
- 20. ScheduledExecutorService vs Timer vs Handler
- 21. HttpRequest vs HttpRequestMessage vs HttpRequestBase
- 22. pycuda vs theano vs pylearn2
- 23. Entfernungsabtastung vs Einzelscan vs Überspringungssuche
- 24. Htmlentities vs addslashes vs mysqli_real_escape_string
- 25. Xamarin vs Mono vs Monodevelop
- 26. Ansichtsfenster vs Fenster Vs Dokument
- 27. Redis vs Memcahced vs Hazelcast
- 28. java.lang.Void vs void vs Null
- 29. import vs __import __() vs importlib.import_module()?
- 30. QueryPerformanceCounter() vs QueryInterruptTime() vs KeQueryInterruptTime()
http://www.baeldung.com/jackson-bidirectional-relationships-and -infinite-recursion –