StackOverflowError-Problem in der Spring Boot-Anwendung während der DTO-Serialisierung
Ich erhalte einen Stackoverflow-Fehler in der Spring-Boot-Anwendung, wenn ich versuche, die DTO-Klasse (nodeattributesdto) mit einer selbstreferenziellen Beziehung zu serialisieren. Der Fehler tritt während der Ausführung der tostring-Methode in der dto-Klasse auf.
nodeattributes.java:
// relevant parts of nodeattributes.java @onetomany(mappedby = "parent") @cache(usage = cacheconcurrencystrategy.read_write) @jsonignoreproperties(value = { "children", "parent", "node" }, allowsetters = true) private set<nodeattributes> children ; @manytoone @jsonignoreproperties(value = { "children", "parent", "node" }, allowsetters = true) private nodeattributes parent; // other fields, getters, setters, etc.
nodeattributesdto.java:
// relevant parts of nodeattributesdto.java private set<nodeattributesdto> children; private nodeattributesdto parent; // getters, setters, and other methods... @override public string tostring() { return "nodeattributesdto{" + "id=" + getid() + // other fields... ", parent=" + getparent() + ", children=" + getchildren() + ", node=" + getnode() + "}"; }
Postmapping-Anfragetext:
{ // some other fields... "children": [ { "key": "attribute412w", "value": "value3", "valuetype": "integer", "type": "response", "required": false, "enabled": true, "node": { "id": 26030 } } ], // other fields... }
Fehler:
{ "type": "https://www.jhipster.tech/problem/problem-with-message", "title": "Internal Server Error", "status": 500, "detail": "Handler dispatch failed; nested exception is java.lang.StackOverflowError", "path": "/api/node-attributes", "message": "error.http.500" }
Frage:
- Wie ändere ich die tostring-Methode in der Klasse „nodeattributesdto“, um einen Stackoverflow-Fehler während der Serialisierung zu vermeiden?
- Gibt es bestimmte Jackson-Anmerkungen oder -Konfigurationen, die ich beim Umgang mit selbstreferenziellen Beziehungen in DTOs berücksichtigen sollte?
Umgebung: Spring-Boot-Version: 2.7.2 Java-Version: 17 Datenbank: postgresql
Ich habe es versucht:
- Verschiedene Jackson-Anmerkungen (@jsonmanagedreference, @jsonbackreference)
Richtige Antwort
Ich glaube, Ihre Verwirrung besteht darin, dass toString das Marshalling in Spring Boot nicht steuert.
Wenn Sie dieses Objekt über System.err.println() im Standardfehler protokollieren möchten, verwendet es den toString.
Es scheint, als ob Ihr toString im Wesentlichen versucht, ein rekursiver Datenspeicherauszug zu sein, aber das ist nicht korrekt. Ich denke, es ist nur einfaches Java/CS.
In toString können Sie einfach die Daten des aktuellen Knotens drucken und dann toString(delagate) für alle untergeordneten Knoten aufrufen. Dies sollte möglich sein. Ich denke, im Allgemeinen benötigen Sie keine Rückverweise (für toString), da Sie oben im „Baum“ beginnen.
Der Marshaller untersucht das Objekt und erstellt mithilfe der Reflexion eine serialisierte Darstellung. Wie Sie bemerkt haben, werden bestimmte Anmerkungen berücksichtigt. Zum Beispiel @JsonIgnore.
Siehe: Wie ignoriere ich Feldantworten in JSON?
Hier gibt es viele gute Informationen: https://www.php.cn/link/ffe4a40fecc90fa1120088e704712fb2
Es könnte auch hilfreich sein, einen einfachen Webdienst außerhalb eines Codegenerierungstools (wie jhipster) zu erstellen, um zu verstehen, was hinter den Kulissen vor sich geht, und so eine bessere Kontrolle über die Generierung zu haben.
Das obige ist der detaillierte Inhalt vonStackOverflowError-Problem in der Spring Boot-Anwendung während der DTO-Serialisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Seit seiner Einführung im Jahr 2009 hat sich Bitcoin zu einem führenden Unternehmen in der Welt der Kryptowährungen entwickelt und sein Preis hat enorme Schwankungen erfahren. Um einen umfassenden historischen Überblick zu bieten, stellt dieser Artikel Bitcoin-Preisdaten von 2009 bis 2025 zusammen und deckt wichtige Marktereignisse, Änderungen der Marktstimmung und wichtige Faktoren ab, die die Preisbewegungen beeinflussen.

Bitcoin hat als Kryptowährung seit seiner Einführung erhebliche Marktvolatilität erlebt. Dieser Artikel bietet einen Überblick über den historischen Preis von Bitcoin seit seiner Geburt, um den Lesern zu helfen, seine Preistrends und Schlüsselmomente zu verstehen. Durch die Analyse der historischen Preisdaten von Bitcoin können wir die Einschätzung des Marktes über seinen Wert und die Faktoren, die seine Schwankungen beeinflussen, verstehen und eine Grundlage für zukünftige Investitionsentscheidungen schaffen.

Seit seiner Gründung im Jahr 2009 hat der Preis von Bitcoin im November 2021 auf 69.044,77 USD auf 69.044,77 USD gestiegen und im Dezember 2018 auf 3.191,22 USD gesunken. Ab Dezember 2024 hat der jüngste Preis 100.204 USD überschritten.

Echtzeit-Bitcoin-USD-Preis Faktoren, die den Bitcoin -Preis beeinflussen Indikatoren für die Vorhersage zukünftiger Bitcoin -Preise Hier finden Sie einige wichtige Informationen zum Preis von Bitcoin in den Jahren 2018-2024:

Wichtiger Knoten für Bitcoin Historical Price 3. Januar 2009: Genesis Block wurde generiert, das erste Bitcoin wurde mit einem Wert von USD 0 generiert. 5. Oktober: Als erste Bitcoin -Transaktion kaufte ein Programmierer zwei Pizzen mit 10.000 Bitcoins, entspricht 0,008 USD. 9. Februar 2010: Die Mt. Gox Exchange ging online und wurde zur Hauptplattform für den frühen Bitcoin -Handel. 22. Mai: Bitcoin bricht zum ersten Mal 1 $ durch. 17. Juli: Bitcoin-Preis fiel auf 0,008 USD und erreichte ein Allzeittief. 9. Februar 2011: Bitcoin Price bricht zum ersten Mal 10 US -Dollar durch. 10. April: Mt. Go

Die technische Q & A -Community in der Chatgpt -Ära: SegmentFaults Antwortstrategie Stackoverflow ...

Die Finanzierungszinsen der virtuellen Währung sind Gebühren für Händler, die Positionen im Handel mit Derivaten innehatten. Es spiegelt eine Prämie oder einen Rabatt zwischen dem Spot -Marktpreis und dem Futures -Vertragspreis nach Ablauf des Vertrags wider. Wenn der Spotpreis höher als der Futures -Preis ist, ist der Kapitalzins negativ, was bedeutet, dass Händler, die Kurzpositionen an Händlern zahlen, die Länge von Händlern zahlen. Im Gegenteil, wenn der Spotpreis niedriger als der Futures -Preis ist, ist der Kapitalzins positiv, was bedeutet, dass Händler, die lange Positionen in Anspruch nehmen, Gebühren für Händler zahlen, die kurze Positionen annehmen.

Der Markt für virtuelle Währungen entwickelt sich ständig weiter und in den kommenden Jahren wird ein aufregendes Wachstum erwartet. Im Jahr 2025 wird erwartet, dass einige Kryptowährungen sich auffallen und die vielversprechendsten Investitionen in den Raum werden. Dieser Artikel analysiert einige der vielversprechendsten virtuellen Währungen im Jahr 2025 und deckt ihre einzigartigen Fähigkeiten, ihr Wachstumspotenzial und ihre Möglichkeiten, die sich auf die Zukunft auswirken. Zu diesen Währungen gehören Ethereum, Bitcoin, Cardano, Polkadot und Binance Coin, die eine Schlüsselrolle bei der Entwicklung dezentraler Finanzierung, intelligenter Verträge und Blockchain -Technologien spielen. In Verständnis des Potenzials dieser virtuellen Währungen können Anleger bereit sein, die Chancen des virtuellen Währungsmarktes im Jahr 2025 zu nutzen.