Hallo, ich versuche einen Baumstruktur abzubilden in der Datenbank. Es geht um gewisse Gruppierungen von Leistungen. Das heißt eine Gruppe kann einen Parent haben, wenn es ein Unterknoten ist, ansonsten hat es keinen Parent. Die Leistungen haben eine gewisse Gruppe als Fremdschlüssel gespeichert, was aber wahrscheinlich für die Frage irrelevant ist.
Die OneToMany-Beziehung funktioniert, allerdings bekomme ich mein Response nur ohne die Kinder. Das heißt nur wen ich bei den Kindern ein @JsonIgnore hinzufüge. Für mich wäre aber optimal die Daten mit den Kindern zu bekommen.
Wenn @JsonIgnore fehlt wird eine Fehlermeldung geworfen:
Hier ist mein Code (ohne @JsonIgnore):
Beim debuggen sind die children vorhanden. Es gibt nur das Problem beim Response.
Ist es möglich mein Response wie gewünscht zu erhalten?
Die OneToMany-Beziehung funktioniert, allerdings bekomme ich mein Response nur ohne die Kinder. Das heißt nur wen ich bei den Kindern ein @JsonIgnore hinzufüge. Für mich wäre aber optimal die Daten mit den Kindern zu bekommen.
Wenn @JsonIgnore fehlt wird eine Fehlermeldung geworfen:
2024-05-08T08:35:52.964+02:00 WARN 28612 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Failure while trying to resolve exception [org.springframework.http.converter.HttpMessageNotWritableException]
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.checkCommitted(ResponseFacade.java:503) ~[tomcat-embed-core-10.1.10.jar:10.1.10]
...
2024-05-08T08:35:52.972+02:00 ERROR 28612 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError)] with root cause
java.lang.StackOverflowError: null
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) ~[na:na]
...
Hier ist mein Code (ohne @JsonIgnore):
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(unique = true, nullable = false)
private String name;
@ManyToOne(fetch = FetchType.LAZY)
private ServiceGroup parent;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent")
private List<ServiceGroup> children = new ArrayList<ServiceGroup>();
@OneToMany(mappedBy = "group", targetEntity = Service.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Service> services;
...
Beim debuggen sind die children vorhanden. Es gibt nur das Problem beim Response.
Ist es möglich mein Response wie gewünscht zu erhalten?
Zuletzt bearbeitet: