Hibernate 1:n Beziehung zur selben Tabelle

Lisun4ik

Mitglied
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:
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:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Hibernate Umsetzung multiple OneToMany Beziehung Data Tier 6
aze Hibernate Entfernen aus einer Collection soll zum Entfernen einer Beziehung führen Data Tier 3
S OneToOne Beziehung erzeugt not marked cascade PERSIST Data Tier 1
S Many-to-One Beziehung?! Data Tier 4
G Hibernate 1:n Beziehung mit Vererbung Data Tier 5
F JPA + EclipseLink rekursive Beziehung löschen Data Tier 2
N Löschen OneToMany Beziehung (delete-orphan) geht nicht Data Tier 2
I Beziehung User <-> Freund, wie bei Sozialen Netzwerken Data Tier 17
H [Hibernate]1:1 Beziehung Data Tier 8
G Hibernate 0...1 : 1 Beziehung Data Tier 6
K hibernate manytoone beziehung und fremdschlüssel als primary schlüssel Data Tier 2
M 1:n:1 Beziehung oder vererben? Data Tier 3
N Hibernate Annotations Rekursive Beziehung? Data Tier 2
G N:M:K Beziehung, n:m nur mit 3 tabellen Data Tier 3
S JPA Self-Join gegen große Tabelle bricht irgendwann ab Data Tier 7
P JPA Liste<String> in Tabelle abbilden? Data Tier 0
F Hibernate HQL INSERT in Tabelle mit eingebetteter Klasse Data Tier 4
P Hibernate Mapping - Nur eine Spalte per Join aus anderer Tabelle holen Data Tier 5
O Hibernate Lesen aus anderer Tabelle Data Tier 14
B JPA Persist: DB-Tabelle wird überschrieben Data Tier 2
H Zusammengesetzte mehrere Klasse als eine Tabelle Data Tier 6
L Hibernate - Tabelle nicht gemappt!? Data Tier 4
alexpetri HSQL Datei in Tabelle speichern Data Tier 2
M Hibernate und JSF-Tabelle Data Tier 4
S Hibernate: Tabelle ohne ID-Spalte Data Tier 2
eSK Objekt löschen -> Ganze Tabelle gelöscht. Data Tier 6

Ähnliche Java Themen


Oben