From 8c262904a7f2ec2e2d3fb13d12cd346d0842e791 Mon Sep 17 00:00:00 2001 From: Stephan Krusche Date: Wed, 22 Jan 2025 08:29:57 +0100 Subject: [PATCH] Development: Fix serialization error for learner profiles with JsonIgnoreProperties --- .../atlas/domain/profile/CourseLearnerProfile.java | 7 +++++++ .../artemis/atlas/domain/profile/LearnerProfile.java | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/main/java/de/tum/cit/aet/artemis/atlas/domain/profile/CourseLearnerProfile.java b/src/main/java/de/tum/cit/aet/artemis/atlas/domain/profile/CourseLearnerProfile.java index 91e77a7c44e1..a920ee081321 100644 --- a/src/main/java/de/tum/cit/aet/artemis/atlas/domain/profile/CourseLearnerProfile.java +++ b/src/main/java/de/tum/cit/aet/artemis/atlas/domain/profile/CourseLearnerProfile.java @@ -10,11 +10,18 @@ import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +import com.fasterxml.jackson.annotation.JsonInclude; + import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.domain.DomainObject; @Entity @Table(name = "course_learner_profile") +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +@JsonInclude(JsonInclude.Include.NON_EMPTY) public class CourseLearnerProfile extends DomainObject { @ManyToOne diff --git a/src/main/java/de/tum/cit/aet/artemis/atlas/domain/profile/LearnerProfile.java b/src/main/java/de/tum/cit/aet/artemis/atlas/domain/profile/LearnerProfile.java index 84bed662672d..06ce79072dda 100644 --- a/src/main/java/de/tum/cit/aet/artemis/atlas/domain/profile/LearnerProfile.java +++ b/src/main/java/de/tum/cit/aet/artemis/atlas/domain/profile/LearnerProfile.java @@ -11,17 +11,28 @@ import jakarta.persistence.OneToOne; import jakarta.persistence.Table; +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import de.tum.cit.aet.artemis.core.domain.DomainObject; import de.tum.cit.aet.artemis.core.domain.User; @Entity @Table(name = "learner_profile") +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +@JsonInclude(JsonInclude.Include.NON_EMPTY) public class LearnerProfile extends DomainObject { + @JsonIgnoreProperties("learnerProfile") @OneToOne(mappedBy = "learnerProfile", cascade = CascadeType.PERSIST) private User user; @OneToMany(mappedBy = "learnerProfile", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) + @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) + @JsonIgnoreProperties("learnerProfile") private Set courseLearnerProfiles = new HashSet<>(); public void setUser(User user) {