diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/CustomEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/CustomEvent.java
index 3fd7e4a0ac..f738fbf6c8 100644
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/CustomEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/CustomEvent.java
@@ -1,5 +1,7 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
 import se.su.dsv.scipro.system.DomainObject;
 
 import jakarta.persistence.Entity;
@@ -13,6 +15,8 @@ public class CustomEvent extends NotificationEvent {
         IDEA_DELETED
     }
 
+    @Basic
+    @Column(name = "event")
     @Enumerated(EnumType.STRING)
     private CustomEvent.Event event;
 
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/GroupEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/GroupEvent.java
index fa25851094..595b2c88fd 100644
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/GroupEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/GroupEvent.java
@@ -1,5 +1,8 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.JoinColumn;
 import se.su.dsv.scipro.group.Group;
 import se.su.dsv.scipro.system.DomainObject;
 
@@ -11,37 +14,36 @@ import jakarta.persistence.ManyToOne;
 @Entity
 public class GroupEvent extends NotificationEvent {
 
-    public void setEvent(Event event) {
-        this.event = event;
+    @Basic
+    @Column(name = "event")
+    @Enumerated(EnumType.STRING)
+    private Event event;
+
+    @ManyToOne
+    @JoinColumn(name = "project_group_id", referencedColumnName = "id")
+    private Group group;
+
+    public GroupEvent() {
+        super(Notification.Type.GROUP);
     }
 
-    public enum Event {
-        MESSAGE_THREAD_CREATED, MESSAGE_THREAD_REPLY
+    @Override
+    public Enum getEvent() {
+        return event;
+    }
+
+    public void setEvent(Event event) {
+        this.event = event;
     }
 
     public Group getGroup() {
         return group;
     }
 
-    @ManyToOne
-    private Group group;
-
-    @Enumerated(EnumType.STRING)
-    private Event event;
-
-    public GroupEvent() {
-        super(Notification.Type.GROUP);
-    }
-
     public void setGroup(Group group) {
         this.group = group;
     }
 
-    @Override
-    public Enum getEvent() {
-        return event;
-    }
-
     @Override
     protected String getEntityTitle() {
         return group.getTitle();
@@ -56,4 +58,8 @@ public class GroupEvent extends NotificationEvent {
     public DomainObject getEntity() {
         return group;
     }
+
+    public enum Event {
+        MESSAGE_THREAD_CREATED, MESSAGE_THREAD_REPLY
+    }
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/IdeaEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/IdeaEvent.java
index 8ef2b2d070..505da3d7ba 100755
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/IdeaEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/IdeaEvent.java
@@ -1,5 +1,8 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.JoinColumn;
 import se.su.dsv.scipro.match.Idea;
 import se.su.dsv.scipro.system.DomainObject;
 
@@ -11,18 +14,24 @@ import jakarta.persistence.ManyToOne;
 @Entity
 public class IdeaEvent extends NotificationEvent {
 
-
-    public enum Event {
-        STATUS_CHANGE, PARTNER_ACCEPT,
-        ADDED_AS_PARTNER, FIRST_MEETING, REMOVED_AS_PARTNER, EXPORTED_FAIL
-    }
-
-    @ManyToOne
-    private Idea idea;
-
+    @Basic
+    @Column(name = "event")
     @Enumerated(EnumType.STRING)
     private Event event;
 
+    @ManyToOne
+    @JoinColumn(name = "idea_id", referencedColumnName = "id")
+    private Idea idea;
+
+    @Override
+    public Event getEvent() {
+        return event;
+    }
+
+    public void setEvent(Event event) {
+        this.event = event;
+    }
+
     public IdeaEvent() {
         super(Notification.Type.IDEA);
     }
@@ -35,15 +44,6 @@ public class IdeaEvent extends NotificationEvent {
         this.idea = idea;
     }
 
-    @Override
-    public Event getEvent() {
-        return event;
-    }
-
-    public void setEvent(Event event) {
-        this.event = event;
-    }
-
     @Override
     public String getEntityTitle() {
         return idea.getTitle();
@@ -58,4 +58,9 @@ public class IdeaEvent extends NotificationEvent {
     public DomainObject getEntity() {
         return idea;
     }
+
+    public enum Event {
+        STATUS_CHANGE, PARTNER_ACCEPT,
+        ADDED_AS_PARTNER, FIRST_MEETING, REMOVED_AS_PARTNER, EXPORTED_FAIL
+    }
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/MileStoneEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/MileStoneEvent.java
index 9e4c1bf5a9..732482b188 100644
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/MileStoneEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/MileStoneEvent.java
@@ -1,5 +1,8 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.JoinColumn;
 import se.su.dsv.scipro.milestones.dataobjects.Milestone;
 import se.su.dsv.scipro.project.Project;
 import se.su.dsv.scipro.system.DomainObject;
@@ -13,28 +16,64 @@ import java.util.Objects;
 @Entity
 public class MileStoneEvent extends NotificationEvent {
 
-    public enum Event {
-        MILESTONE_CONFIRMED, MILESTONE_REVOKED
-    }
-
-    @ManyToOne
-    private Milestone milestone;
-
+    @Basic
+    @Column(name = "event")
     @Enumerated(EnumType.STRING)
     private Event event;
 
+    @ManyToOne
+    @JoinColumn(name = "milestone_id", referencedColumnName = "id")
+    private Milestone milestone;
+
     public MileStoneEvent() {
         super(Notification.Type.MILESTONE);
     }
 
     @Override
-    public Project getProject() {
-        return milestone.getProject();
+    public Enum getEvent() {
+        return event;
+    }
+
+    public void setEvent(Event event) {
+        this.event = event;
+    }
+
+    public Milestone getMilestone() {
+        return this.milestone;
+    }
+
+    public void setMilestone(Milestone milestone) {
+        this.milestone = milestone;
     }
 
     @Override
-    public Enum getEvent() {
-        return event;
+    public boolean equals(final Object o) {
+        if (o == this) return true;
+        if (!(o instanceof MileStoneEvent)) return false;
+        final MileStoneEvent other = (MileStoneEvent) o;
+        return other.canEqual(this)
+                && super.equals(o)
+                && Objects.equals(this.getMilestone(), other.getMilestone())
+                && Objects.equals(this.getEvent(), other.getEvent());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(this.getMilestone(), this.getEvent());
+    }
+
+    @Override
+    public String toString() {
+        return "MileStoneEvent(milestone=" + this.getMilestone() + ", event=" + this.getEvent() + ")";
+    }
+
+    protected boolean canEqual(final Object other) {
+        return other instanceof MileStoneEvent;
+    }
+
+    @Override
+    public Project getProject() {
+        return milestone.getProject();
     }
 
     @Override
@@ -52,40 +91,7 @@ public class MileStoneEvent extends NotificationEvent {
         return milestone;
     }
 
-    public Milestone getMilestone() {
-        return this.milestone;
-    }
-
-    public void setMilestone(Milestone milestone) {
-        this.milestone = milestone;
-    }
-
-    public void setEvent(Event event) {
-        this.event = event;
-    }
-
-    @Override
-    public String toString() {
-        return "MileStoneEvent(milestone=" + this.getMilestone() + ", event=" + this.getEvent() + ")";
-    }
-
-    @Override
-    public boolean equals(final Object o) {
-        if (o == this) return true;
-        if (!(o instanceof MileStoneEvent)) return false;
-        final MileStoneEvent other = (MileStoneEvent) o;
-        return other.canEqual(this)
-                && super.equals(o)
-                && Objects.equals(this.getMilestone(), other.getMilestone())
-                && Objects.equals(this.getEvent(), other.getEvent());
-    }
-
-    protected boolean canEqual(final Object other) {
-        return other instanceof MileStoneEvent;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(this.getMilestone(), this.getEvent());
+    public enum Event {
+        MILESTONE_CONFIRMED, MILESTONE_REVOKED
     }
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/PeerEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/PeerEvent.java
index 17272c9768..d290f4611b 100755
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/PeerEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/PeerEvent.java
@@ -1,5 +1,8 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.JoinColumn;
 import se.su.dsv.scipro.peer.PeerReview;
 import se.su.dsv.scipro.project.Project;
 import se.su.dsv.scipro.system.DomainObject;
@@ -12,22 +15,26 @@ import jakarta.persistence.ManyToOne;
 @Entity
 public class PeerEvent extends NotificationEvent {
 
-    public enum Event { REVIEW_COMPLETED, REVIEW_COMMENT, REVIEW_ACCEPTED, REQUEST_DELETED,
-        REQUEST_EXPIRED }
-
-    @ManyToOne
-    private PeerReview review;
-
+    @Basic
+    @Column(name = "event")
     @Enumerated(EnumType.STRING)
     private Event event;
 
+    @ManyToOne
+    @JoinColumn(name = "peer_review_id", referencedColumnName = "id")
+    private PeerReview review;
+
     public PeerEvent() {
         super(Notification.Type.PEER);
     }
 
     @Override
-    public Project getProject() {
-        return review.getProject();
+    public Event getEvent() {
+        return event;
+    }
+
+    public void setEvent(Event event) {
+        this.event = event;
     }
 
     public PeerReview getReview() {
@@ -39,12 +46,8 @@ public class PeerEvent extends NotificationEvent {
     }
 
     @Override
-    public Event getEvent() {
-        return event;
-    }
-
-    public void setEvent(Event event) {
-        this.event = event;
+    public Project getProject() {
+        return review.getProject();
     }
 
     @Override
@@ -61,4 +64,8 @@ public class PeerEvent extends NotificationEvent {
     public DomainObject getEntity() {
         return review;
     }
+
+    public enum Event {
+        REVIEW_COMPLETED, REVIEW_COMMENT, REVIEW_ACCEPTED, REQUEST_DELETED,
+        REQUEST_EXPIRED }
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/PeerRequestEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/PeerRequestEvent.java
index 37355d4d44..72f6dac062 100644
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/PeerRequestEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/PeerRequestEvent.java
@@ -1,5 +1,8 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.JoinColumn;
 import se.su.dsv.scipro.peer.PeerRequest;
 import se.su.dsv.scipro.project.Project;
 import se.su.dsv.scipro.system.DomainObject;
@@ -12,10 +15,13 @@ import jakarta.persistence.ManyToOne;
 @Entity
 public class PeerRequestEvent extends NotificationEvent {
 
+    @Basic
+    @Column(name = "event")
     @Enumerated(EnumType.STRING)
     private PeerEvent.Event event;
 
     @ManyToOne
+    @JoinColumn(name = "peer_request_id", referencedColumnName = "id")
     private PeerRequest request;
 
     public PeerRequestEvent() {
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/ProjectEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/ProjectEvent.java
index c8c3e51032..bc0b4ecc88 100755
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/ProjectEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/ProjectEvent.java
@@ -1,5 +1,8 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.JoinColumn;
 import se.su.dsv.scipro.project.Project;
 import se.su.dsv.scipro.system.DomainObject;
 
@@ -11,37 +14,19 @@ import jakarta.persistence.ManyToOne;
 @Entity
 public class ProjectEvent extends NotificationEvent {
 
-    public enum Event {
-        CREATED, AUTHORS_CHANGED, HEAD_SUPERVISOR_CHANGED, REVIEWERS_CHANGED, CO_SUPERVISOR_CHANGED,
-        STATE_CHANGED, ACTIVITY_ADDED, ACTIVITY_REMOVED, ACTIVITY_EDITED, FILE_UPLOADED, CHECKLIST_ANSWERED,
-        CHECKLIST_ADDED, MILESTONE_CONFIRMED, MILESTONE_REVOKED, FINAL_THESIS_APPROVED, FILE_SIZE_TOO_BIG,
-        FINAL_THESIS_UPLOADED, PROJECT_ACTIVATED, PROJECT_DEACTIVATED, FINAL_SEMINAR_APPROVAL_REQUESTED,
-        FINAL_SEMINAR_APPROVAL_APPROVED, FINAL_SEMINAR_APPROVAL_REJECTED, ROUGH_DRAFT_APPROVAL_REQUESTED,
-        ROUGH_DRAFT_APPROVAL_APPROVED, ROUGH_DRAFT_APPROVAL_REJECTED, REVIEWER_GRADING_REPORT_SUBMITTED,
-        ONE_YEAR_PASSED_FROM_LATEST_ANNUAL_REVIEW, SUPERVISOR_GRADING_INITIAL_ASSESSMENT_DONE,
-        EXPORTED_SUCCESS, REVIEWER_GRADING_INITIAL_ASSESSMENT_DONE, FIRST_MEETING, OPPOSITION_FAILED, PARTICIPATION_APPROVED, COMPLETED,
-        PARTICIPATION_FAILED
-    }
-
-    @ManyToOne
-    private Project project;
-
+    @Basic
+    @Column(name = "event")
     @Enumerated(EnumType.STRING)
     private Event event;
 
+    @ManyToOne
+    @JoinColumn(name = "project_id", referencedColumnName = "id")
+    private Project project;
+
     public ProjectEvent() {
         super(Notification.Type.PROJECT);
     }
 
-    @Override
-    public Project getProject() {
-        return project;
-    }
-
-    public void setProject(Project project) {
-        this.project = project;
-    }
-
     @Override
     public Event getEvent() {
         return event;
@@ -51,6 +36,15 @@ public class ProjectEvent extends NotificationEvent {
         this.event = event;
     }
 
+    @Override
+    public Project getProject() {
+        return project;
+    }
+
+    public void setProject(Project project) {
+        this.project = project;
+    }
+
     @Override
     public String getEntityTitle() {
         return project.getTitle();
@@ -65,4 +59,16 @@ public class ProjectEvent extends NotificationEvent {
     public DomainObject getEntity() {
         return project;
     }
+
+    public enum Event {
+        CREATED, AUTHORS_CHANGED, HEAD_SUPERVISOR_CHANGED, REVIEWERS_CHANGED, CO_SUPERVISOR_CHANGED,
+        STATE_CHANGED, ACTIVITY_ADDED, ACTIVITY_REMOVED, ACTIVITY_EDITED, FILE_UPLOADED, CHECKLIST_ANSWERED,
+        CHECKLIST_ADDED, MILESTONE_CONFIRMED, MILESTONE_REVOKED, FINAL_THESIS_APPROVED, FILE_SIZE_TOO_BIG,
+        FINAL_THESIS_UPLOADED, PROJECT_ACTIVATED, PROJECT_DEACTIVATED, FINAL_SEMINAR_APPROVAL_REQUESTED,
+        FINAL_SEMINAR_APPROVAL_APPROVED, FINAL_SEMINAR_APPROVAL_REJECTED, ROUGH_DRAFT_APPROVAL_REQUESTED,
+        ROUGH_DRAFT_APPROVAL_APPROVED, ROUGH_DRAFT_APPROVAL_REJECTED, REVIEWER_GRADING_REPORT_SUBMITTED,
+        ONE_YEAR_PASSED_FROM_LATEST_ANNUAL_REVIEW, SUPERVISOR_GRADING_INITIAL_ASSESSMENT_DONE,
+        EXPORTED_SUCCESS, REVIEWER_GRADING_INITIAL_ASSESSMENT_DONE, FIRST_MEETING, OPPOSITION_FAILED, PARTICIPATION_APPROVED, COMPLETED,
+        PARTICIPATION_FAILED
+    }
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/ProjectForumEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/ProjectForumEvent.java
index a5b2989c19..c4ca9fb4f4 100644
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/ProjectForumEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/ProjectForumEvent.java
@@ -1,5 +1,8 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.JoinColumn;
 import se.su.dsv.scipro.project.Project;
 import se.su.dsv.scipro.system.DomainObject;
 
@@ -10,29 +13,20 @@ import jakarta.persistence.ManyToOne;
 
 @Entity
 public class ProjectForumEvent extends NotificationEvent {
-    @ManyToOne
-    private Project project;
 
+    @Basic
+    @Column(name = "event")
     @Enumerated(EnumType.STRING)
     private Event event;
 
-    public void setProject(Project project) {
-        this.project = project;
-    }
-
-    public enum Event {
-        NEW_FORUM_POST, NEW_FORUM_POST_COMMENT, NEW_REVIEWER_INTERACTION
-    }
+    @ManyToOne
+    @JoinColumn(name = "project_id", referencedColumnName = "id")
+    private Project project;
 
     public ProjectForumEvent() {
         super(Notification.Type.FORUM);
     }
 
-    @Override
-    public Project getProject() {
-        return this.project;
-    }
-
     @Override
     public Event getEvent() {
         return event;
@@ -42,6 +36,15 @@ public class ProjectForumEvent extends NotificationEvent {
         this.event = event;
     }
 
+    @Override
+    public Project getProject() {
+        return this.project;
+    }
+
+    public void setProject(Project project) {
+        this.project = project;
+    }
+
     @Override
     protected String getEntityTitle() {
         return project.getTitle();
@@ -57,4 +60,7 @@ public class ProjectForumEvent extends NotificationEvent {
         return project;
     }
 
+    public enum Event {
+        NEW_FORUM_POST, NEW_FORUM_POST_COMMENT, NEW_REVIEWER_INTERACTION
+    }
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/SeminarEvent.java b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/SeminarEvent.java
index 46951edcc3..5f71fc87a3 100755
--- a/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/SeminarEvent.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/dataobject/SeminarEvent.java
@@ -1,5 +1,8 @@
 package se.su.dsv.scipro.notifications.dataobject;
 
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.JoinColumn;
 import se.su.dsv.scipro.finalseminar.FinalSeminar;
 import se.su.dsv.scipro.project.Project;
 import se.su.dsv.scipro.system.DomainObject;
@@ -12,27 +15,19 @@ import jakarta.persistence.ManyToOne;
 @Entity
 public class SeminarEvent extends NotificationEvent {
 
-    public enum Event { CREATED, ROOM_CHANGED, DATE_CHANGED, OPPOSITION_CHANGED, PARTICIPATION_CHANGED, THESIS_UPLOADED, THESIS_UPLOADED_OPPONENT,
-                        OPPOSITION_REPORT_UPLOADED, THESIS_DELETED, THESIS_UPLOAD_REMIND, CANCELLED}
-
-    @ManyToOne
-    private FinalSeminar seminar;
-
+    @Basic
+    @Column(name = "event")
     @Enumerated(EnumType.STRING)
     private Event event;
 
+    @ManyToOne
+    @JoinColumn(name = "final_seminar_id", referencedColumnName = "id")
+    private FinalSeminar seminar;
+
     public SeminarEvent() {
         super(Notification.Type.FINAL_SEMINAR);
     }
 
-    public FinalSeminar getSeminar() {
-        return seminar;
-    }
-
-    public void setSeminar(FinalSeminar seminar) {
-        this.seminar = seminar;
-    }
-
     @Override
     public Event getEvent() {
         return event;
@@ -42,6 +37,14 @@ public class SeminarEvent extends NotificationEvent {
         this.event = event;
     }
 
+    public FinalSeminar getSeminar() {
+        return seminar;
+    }
+
+    public void setSeminar(FinalSeminar seminar) {
+        this.seminar = seminar;
+    }
+
     @Override
     public String getEntityTitle() {
         return seminar.getProject().getTitle();
@@ -61,4 +64,8 @@ public class SeminarEvent extends NotificationEvent {
     public DomainObject getEntity() {
         return seminar;
     }
+
+    public enum Event { CREATED, ROOM_CHANGED, DATE_CHANGED, OPPOSITION_CHANGED,
+        PARTICIPATION_CHANGED, THESIS_UPLOADED, THESIS_UPLOADED_OPPONENT,
+        OPPOSITION_REPORT_UPLOADED, THESIS_DELETED, THESIS_UPLOAD_REMIND, CANCELLED}
 }