diff --git a/src/main/java/com/seyed/ali/timeentryservice/model/domain/TimeEntry.java b/src/main/java/com/seyed/ali/timeentryservice/model/domain/TimeEntry.java index b01c561..3278c8e 100644 --- a/src/main/java/com/seyed/ali/timeentryservice/model/domain/TimeEntry.java +++ b/src/main/java/com/seyed/ali/timeentryservice/model/domain/TimeEntry.java @@ -1,5 +1,6 @@ package com.seyed.ali.timeentryservice.model.domain; +import com.fasterxml.jackson.annotation.JsonManagedReference; import jakarta.persistence.CascadeType; import jakarta.persistence.Entity; import jakarta.persistence.Id; @@ -30,6 +31,7 @@ public class TimeEntry implements Serializable { @OneToMany(mappedBy = "timeEntry", cascade = CascadeType.ALL) @ToString.Exclude @Builder.Default + @JsonManagedReference // this is the forward part of the relationship – the one that gets serialized normally private List timeSegmentList = new ArrayList<>(); private String userId; diff --git a/src/main/java/com/seyed/ali/timeentryservice/model/domain/TimeSegment.java b/src/main/java/com/seyed/ali/timeentryservice/model/domain/TimeSegment.java index c7e2081..047ba7f 100644 --- a/src/main/java/com/seyed/ali/timeentryservice/model/domain/TimeSegment.java +++ b/src/main/java/com/seyed/ali/timeentryservice/model/domain/TimeSegment.java @@ -1,5 +1,6 @@ package com.seyed.ali.timeentryservice.model.domain; +import com.fasterxml.jackson.annotation.JsonBackReference; import jakarta.persistence.CascadeType; import jakarta.persistence.Entity; import jakarta.persistence.Id; @@ -26,6 +27,7 @@ public class TimeSegment implements Serializable { private Duration duration; @ManyToOne(cascade = CascadeType.ALL) + @JsonBackReference // this is the back part of the relationship – it will be omitted from serialization to avoid the infinite loop private TimeEntry timeEntry; } \ No newline at end of file