diff --git a/ccm-core/src/main/java/org/libreccm/categorization/CategoryMarshaller.java b/ccm-core/src/main/java/org/libreccm/categorization/CategoryMarshaller.java index c5aaec025..2174c8bd5 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/CategoryMarshaller.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/CategoryMarshaller.java @@ -21,6 +21,7 @@ package org.libreccm.categorization; import org.libreccm.portation.AbstractMarshaller; import javax.inject.Inject; +import javax.transaction.Transactional; /** * @author Tobias Osmers @@ -37,6 +38,7 @@ public class GroupMarshaller extends AbstractMarshaller { } @Override + @Transactional(Transactional.TxType.REQUIRED) protected void insertIntoDb(Group portableObject) { groupRepository.save(portableObject); } diff --git a/ccm-core/src/main/java/org/libreccm/security/GroupMembershipMarshaller.java b/ccm-core/src/main/java/org/libreccm/security/GroupMembershipMarshaller.java index a8b8dd026..7c98a7335 100644 --- a/ccm-core/src/main/java/org/libreccm/security/GroupMembershipMarshaller.java +++ b/ccm-core/src/main/java/org/libreccm/security/GroupMembershipMarshaller.java @@ -22,6 +22,7 @@ import org.libreccm.portation.AbstractMarshaller; import javax.inject.Inject; import javax.persistence.EntityManager; +import javax.transaction.Transactional; /** * @author Tobias Osmers @@ -38,6 +39,7 @@ public class PermissionMarshaller extends AbstractMarshaller { } @Override + @Transactional(Transactional.TxType.REQUIRED) protected void insertIntoDb(Permission portableObject) { if (portableObject.getPermissionId() == 0) { entityManager.persist(portableObject); diff --git a/ccm-core/src/main/java/org/libreccm/security/RoleMarshaller.java b/ccm-core/src/main/java/org/libreccm/security/RoleMarshaller.java index 024302276..40423ee88 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RoleMarshaller.java +++ b/ccm-core/src/main/java/org/libreccm/security/RoleMarshaller.java @@ -21,6 +21,7 @@ package org.libreccm.security; import org.libreccm.portation.AbstractMarshaller; import javax.inject.Inject; +import javax.transaction.Transactional; /** * @author Tobias Osmers @@ -38,6 +39,7 @@ public class RoleMembershipMarshaller extends AbstractMarshaller } @Override + @Transactional(Transactional.TxType.REQUIRED) protected void insertIntoDb(RoleMembership portableObject) { if (portableObject.getMembershipId() == 0) { entityManager.persist(portableObject); diff --git a/ccm-core/src/main/java/org/libreccm/security/UserMarshaller.java b/ccm-core/src/main/java/org/libreccm/security/UserMarshaller.java index 51b93cc16..450553d95 100644 --- a/ccm-core/src/main/java/org/libreccm/security/UserMarshaller.java +++ b/ccm-core/src/main/java/org/libreccm/security/UserMarshaller.java @@ -21,6 +21,7 @@ package org.libreccm.security; import org.libreccm.portation.AbstractMarshaller; import javax.inject.Inject; +import javax.transaction.Transactional; /** * @author Tobias Osmers @@ -37,6 +38,7 @@ public class AssignableTaskMarshaller extends AbstractMarshaller } @Override + @Transactional(Transactional.TxType.REQUIRED) protected void insertIntoDb(AssignableTask portableObject) { assignableTaskRepository.save(portableObject); } diff --git a/ccm-core/src/main/java/org/libreccm/workflow/Task.java b/ccm-core/src/main/java/org/libreccm/workflow/Task.java index 8303f7c31..7ff527165 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/Task.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/Task.java @@ -18,20 +18,13 @@ */ package org.libreccm.workflow; -import static org.libreccm.core.CoreConstants.*; - import com.fasterxml.jackson.annotation.JsonBackReference; -import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; import org.libreccm.core.CcmObject; import org.libreccm.core.Identifiable; import org.libreccm.l10n.LocalizedString; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - import javax.persistence.AssociationOverride; import javax.persistence.Column; import javax.persistence.Embedded; @@ -52,6 +45,13 @@ import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +import static org.libreccm.core.CoreConstants.DB_SCHEMA; /** * A task is part of a workflow and represents a specific step in the creation @@ -166,7 +166,9 @@ public class Task implements Identifiable, Serializable { * Tasks which the depends of this task. */ @ManyToMany(mappedBy = "dependsOn") - @JsonManagedReference(value = "dependent-dependson") + @JsonIdentityInfo( + generator = ObjectIdGenerators.PropertyGenerator.class, + property = "taskId") private List dependentTasks; /** @@ -179,7 +181,9 @@ public class Task implements Identifiable, Serializable { @JoinColumn(name = "DEPENDS_ON_TASK_ID")}, inverseJoinColumns = { @JoinColumn(name = "DEPENDENT_TASK_ID")}) - @JsonBackReference(value = "dependent-dependson") + @JsonIdentityInfo( + generator = ObjectIdGenerators.PropertyGenerator.class, + property = "taskId") private List dependsOn; /** diff --git a/ccm-core/src/main/java/org/libreccm/workflow/TaskAssignmentMarshaller.java b/ccm-core/src/main/java/org/libreccm/workflow/TaskAssignmentMarshaller.java index 5a39d987b..1df7c75dd 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/TaskAssignmentMarshaller.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/TaskAssignmentMarshaller.java @@ -22,6 +22,7 @@ import org.libreccm.portation.AbstractMarshaller; import javax.inject.Inject; import javax.persistence.EntityManager; +import javax.transaction.Transactional; /** * @author Tobias Osmers @@ -37,6 +38,7 @@ public class WorkflowMarshaller extends AbstractMarshaller { } @Override + @Transactional(Transactional.TxType.REQUIRED) protected void insertIntoDb(Workflow portableObject) { workflowRepository.save(portableObject); } diff --git a/ccm-core/src/main/java/org/libreccm/workflow/WorkflowTemplateMarshaller.java b/ccm-core/src/main/java/org/libreccm/workflow/WorkflowTemplateMarshaller.java index 1cae65498..49f9119fe 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/WorkflowTemplateMarshaller.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/WorkflowTemplateMarshaller.java @@ -21,6 +21,7 @@ package org.libreccm.workflow; import org.libreccm.portation.AbstractMarshaller; import javax.inject.Inject; +import javax.transaction.Transactional; /** * @author