From 4b6bd259eb3bfa80fae8b0a198ce6b626b75d960 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Thu, 26 Jan 2023 19:02:50 +0100 Subject: [PATCH] Changed transaction handling for ImExporters --- .../org/libreccm/imexport/AbstractEntityImExporter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ccm-core/src/main/java/org/libreccm/imexport/AbstractEntityImExporter.java b/ccm-core/src/main/java/org/libreccm/imexport/AbstractEntityImExporter.java index f936d00da..8b8527a8e 100644 --- a/ccm-core/src/main/java/org/libreccm/imexport/AbstractEntityImExporter.java +++ b/ccm-core/src/main/java/org/libreccm/imexport/AbstractEntityImExporter.java @@ -34,6 +34,8 @@ import java.util.stream.Collectors; import javax.annotation.PostConstruct; import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.persistence.EntityManager; import javax.transaction.Transactional; /** @@ -49,6 +51,9 @@ import javax.transaction.Transactional; public abstract class AbstractEntityImExporter { private final ObjectMapper objectMapper; + + @Inject + private EntityManager entityManager; /** * A set of entities which should be processed before this implementation is @@ -147,7 +152,7 @@ public abstract class AbstractEntityImExporter { * @see #updateExistingEntity(org.libreccm.imexport.Exportable, * org.libreccm.imexport.Exportable) */ - @Transactional(Transactional.TxType.REQUIRED) + @Transactional(Transactional.TxType.REQUIRES_NEW) public T importEntity(final String data) throws ImportExpection { try { final T importedEntity = objectMapper.readValue(data, @@ -158,6 +163,8 @@ public abstract class AbstractEntityImExporter { if (existingEntityResult.isPresent()) { final T existingEntity = existingEntityResult.get(); updateExistingEntity(existingEntity, importedEntity); + + return existingEntity; } else { saveImportedEntity(importedEntity);