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);