diff --git a/Makefile b/Makefile
index 1de82865aa2cd00d37ad3879f346d41ab7cab89b..e3c832ef22945416a0d34c70bcfa4ec742c55ef1 100644
--- a/Makefile
+++ b/Makefile
@@ -193,31 +193,31 @@ pull-metadata:
 
 test-backend: test-authentication-service test-container-service test-database-service test-discovery-service test-gateway-service test-query-service test-table-service test-identifier-service test-metadata-service
 
-test-authentication-service:
+test-authentication-service: build-backend-metadata-db
 	mvn -f ./fda-authentication-service/pom.xml clean test verify
 
-test-identifier-service:
+test-identifier-service: build-backend-metadata-db
 	mvn -f ./fda-identifier-service/pom.xml clean test verify
 
-test-container-service:
+test-container-service: build-backend-metadata-db
 	mvn -f ./fda-container-service/pom.xml clean test verify
 
-test-database-service:
+test-database-service: build-backend-metadata-db
 	mvn -f ./fda-database-service/pom.xml clean test verify
 
-test-discovery-service:
+test-discovery-service: build-backend-metadata-db
 	mvn -f ./fda-discovery-service/pom.xml clean test verify
 
-test-gateway-service:
+test-gateway-service: build-backend-metadata-db
 	mvn -f ./fda-gateway-service/pom.xml clean test verify
 
-test-query-service:
+test-query-service: build-backend-metadata-db
 	mvn -f ./fda-query-service/pom.xml clean test verify
 
-test-table-service:
+test-table-service: build-backend-metadata-db
 	mvn -f ./fda-table-service/pom.xml clean test verify
 
-test-metadata-service:
+test-metadata-service: build-backend-metadata-db
 	mvn -f ./fda-metadata-service/pom.xml clean test verify
 
 coverage-frontend: clean build-frontend
diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java
index 7f78acda8f97c7034149f42df8da7d8dec7fa6a7..79202e12775045ecd6767e4fd6f2841358ccee5b 100644
--- a/fda-container-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java
+++ b/fda-container-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java
@@ -142,7 +142,6 @@ public abstract class BaseUnitTest {
             .jdbcMethod(IMAGE_1_JDBC)
             .dialect(IMAGE_1_DIALECT)
             .driverClass(IMAGE_1_DRIVER)
-            .containers(List.of())
             .compiled(IMAGE_1_BUILT)
             .size(IMAGE_1_SIZE)
             .environment(IMAGE_1_ENV)
@@ -193,7 +192,6 @@ public abstract class BaseUnitTest {
             .jdbcMethod(IMAGE_2_JDBC)
             .dialect(IMAGE_2_DIALECT)
             .driverClass(IMAGE_2_DRIVER)
-            .containers(List.of())
             .compiled(IMAGE_2_BUILT)
             .size(IMAGE_2_SIZE)
             .environment(IMAGE_2_ENV)
diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
index 80aa2f15c41a2dcf312678fa014ee45c73c42d70..9bcaf7b91d5d62c7b86862e8df87c6231f623753 100644
--- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
+++ b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
@@ -11,7 +11,6 @@ import at.tuwien.repository.jpa.ImageRepository;
 import at.tuwien.repository.jpa.UserRepository;
 import com.github.dockerjava.api.DockerClient;
 import com.github.dockerjava.api.exception.NotModifiedException;
-import com.github.dockerjava.api.model.HostConfig;
 import com.github.dockerjava.api.model.Network;
 import lombok.extern.log4j.Log4j2;
 import org.apache.http.auth.BasicUserPrincipal;
@@ -46,7 +45,7 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     @MockBean
     private ContainerRepository containerRepository;
 
-    @MockBean
+    @Autowired
     private ImageRepository imageRepository;
 
     @Autowired
@@ -82,6 +81,7 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
 
         /* mock data */
         userRepository.save(USER_1);
+        imageRepository.save(IMAGE_1);
     }
 
     @AfterEach
@@ -127,8 +127,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
                 .thenReturn(Optional.empty());
         when(containerRepository.save(any(Container.class)))
                 .thenReturn(CONTAINER_1);
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
 
         /* test */
         final Container container = containerService.create(request, principal);
@@ -148,8 +146,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
         /* mock */
         when(containerRepository.findByInternalName(CONTAINER_1_INTERNALNAME))
                 .thenReturn(Optional.of(CONTAINER_1));
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
 
         /* test */
         assertThrows(ContainerAlreadyExistsException.class, () -> {
@@ -163,8 +159,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
         /* mock */
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.empty());
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
 
         /* test */
         assertThrows(ContainerNotFoundException.class, () -> {
@@ -182,8 +176,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
         final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
 
         /* test */
         assertThrows(ImageNotFoundException.class, () -> {
@@ -196,8 +188,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void findById_notFound_fails() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
 
         /* test */
         assertThrows(ContainerNotFoundException.class, () -> {
@@ -209,8 +199,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_start_succeeds() throws DockerClientException, ContainerNotFoundException {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
@@ -223,8 +211,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_stop_succeeds() throws DockerClientException, InterruptedException, ContainerNotFoundException {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
@@ -238,8 +224,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_startSavedButNotFound_fails() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
 
@@ -253,8 +237,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_removeSavedButNotFound_fails() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
 
@@ -268,8 +250,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void getAll_succeeds() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findAll())
                 .thenReturn(List.of(CONTAINER_1, CONTAINER_2));
 
@@ -282,8 +262,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void remove_succeeds() throws DockerClientException, ContainerStillRunningException, ContainerNotFoundException {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
@@ -306,8 +284,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void remove_stillRunning_fails() throws InterruptedException {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
@@ -323,8 +299,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_alreadyRunning_fails() throws InterruptedException {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
@@ -340,8 +314,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_startNotFound_fails() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.empty());
         dockerUtil.createContainer(CONTAINER_1);
@@ -356,8 +328,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_alreadyStopped_fails() throws InterruptedException {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
@@ -374,8 +344,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_stopNeverStarted_fails() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
@@ -390,8 +358,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void change_stopSavedButNotFound_fails() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
 
@@ -406,8 +372,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
             ContainerNotRunningException {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
@@ -425,8 +389,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void inspect_notFound_fails() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
 
         /* test */
         assertThrows(ContainerNotFoundException.class, () -> {
@@ -438,8 +400,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest {
     public void inspect_notRunning_fails() {
 
         /* mock */
-        when(imageRepository.findByRepositoryAndTag(IMAGE_1_REPOSITORY, IMAGE_1_TAG))
-                .thenReturn(Optional.of(IMAGE_1));
         when(containerRepository.findById(CONTAINER_1_ID))
                 .thenReturn(Optional.of(CONTAINER_1));
         dockerUtil.createContainer(CONTAINER_1);
diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java
index 6d11f4dbdc131d3d9b971fc2ed83f12325c8eeaa..a750619662b7241875bd51c46a4952182a19cc80 100644
--- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java
+++ b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java
@@ -44,6 +44,7 @@ public class ImageServiceIntegrationTest extends BaseUnitTest {
     @Transactional
     @BeforeEach
     public void beforeEach() {
+        imageRepository.save(IMAGE_1);
         log.debug("save container {}", CONTAINER_1);
         containerRepository.save(CONTAINER_1);
     }
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
index d483e9f5932e26a09a1260b21aee8b34004e597e..c9227c53a94525c34602fac65a174bbe5481944e 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
@@ -58,14 +58,14 @@ public class Container {
     private Integer port;
 
     @org.springframework.data.annotation.Transient
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumns({
             @JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
     })
     private List<Database> databases;
 
     @org.springframework.data.annotation.Transient
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     private ContainerImage image;
 
     @Column
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
index 8704b32853c007cb7dcb10b01e00546065f404df..aa42dee40e6a61082daed91254918cf761db7b3c 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
@@ -70,7 +70,7 @@ public class ContainerImage {
 
     @org.springframework.data.annotation.Transient
     @ToString.Exclude
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE, mappedBy = "image")
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.DETACH, mappedBy = "image")
     private List<Container> containers;
 
     @Column(nullable = false, updatable = false)
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java
index 48a8d47a4b3e23756fdf49ae3160bc0b45d16aba..35f755a7147f5e606f4dded54a78499f3ad87ced 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java
@@ -36,7 +36,7 @@ public class ContainerImageDate {
 
     @org.springframework.data.annotation.Transient
     @ToString.Exclude
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumn(name = "iid", insertable = false, updatable = false)
     private ContainerImage image;
 
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java
index 14466a12bd8d992f339a6367f96455fd5a67cae8..056311dedf7ae868176ea99e6d2613cbddd3d8b5 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java
@@ -46,7 +46,7 @@ public class View {
     private User creator;
 
     @org.springframework.data.annotation.Transient
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumn(name = "vdbid", insertable = false, updatable = false)
     private Database database;
 
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
index c19555325c5f5baa2564deb10b048aba0f33b9d7..3dd66a573cb2f4b4b21acd21d868038e5b7ee07f 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
@@ -63,11 +63,11 @@ public class Table {
 
     @org.springframework.data.annotation.Transient
     @ToString.Exclude
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumn(name = "tdbid", insertable = false, updatable = false)
     private Database database;
 
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE, mappedBy = "table")
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.DETACH, mappedBy = "table")
     @OrderBy("ordinalPosition")
     private List<TableColumn> columns;
 
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
index 18412a2792a1f9f9a37c560a77fc00015de5b437..8ea2472b4bf0c5cd82bcdd21d4129515a38a1d8c 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
@@ -52,13 +52,13 @@ public class TableColumn implements Comparable<TableColumn> {
     private Long dfid;
 
     @ToString.Exclude
-    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumn(name = "dfid", referencedColumnName = "id", insertable = false, updatable = false)
     private ContainerImageDate dateFormat;
 
     @org.springframework.data.annotation.Transient
     @ToString.Exclude
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumns({
             @JoinColumn(name = "tid", referencedColumnName = "id", insertable = false, updatable = false),
             @JoinColumn(name = "cdbid", referencedColumnName = "tdbid", insertable = false, updatable = false)
@@ -117,7 +117,7 @@ public class TableColumn implements Comparable<TableColumn> {
     @CreatedDate
     private Instant created;
 
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinTable(name = "mdb_columns_concepts",
             joinColumns = {
                     @JoinColumn(name = "cid", referencedColumnName = "id", insertable = false, updatable = false),
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/concepts/Concept.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/concepts/Concept.java
index 733b2c6b146340798d87381f979cc8e433c715b5..01f0334edc5de67f4a7bef976a5a44a2add1a330 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/concepts/Concept.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/concepts/Concept.java
@@ -29,7 +29,7 @@ public class Concept {
 
     @org.springframework.data.annotation.Transient
     @ToString.Exclude
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinTable(name = "mdb_columns_concepts",
             joinColumns = @JoinColumn(name = "uri"),
             inverseJoinColumns = {
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
index 2fd30300602a791c7ea64856564685e496e2a824..14e2762a4d74330a57c1135f4b266c96e14f4408 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
@@ -71,7 +71,7 @@ public class Identifier {
     @Enumerated(EnumType.STRING)
     private LanguageType language;
 
-    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumns({
             @JoinColumn(name = "License", referencedColumnName = "identifier")
     })
@@ -118,7 +118,7 @@ public class Identifier {
     @Enumerated(EnumType.STRING)
     private VisibilityType visibility = VisibilityType.SELF;
 
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumns({
             @JoinColumn(name = "iid", referencedColumnName = "id", insertable = false, updatable = false)
     })
diff --git a/fda-metadata-db/querystore/src/main/java/at/tuwien/querystore/Query.java b/fda-metadata-db/querystore/src/main/java/at/tuwien/querystore/Query.java
index 7e29b0f91ecbd10dd5e9f81a2c5a9d5498d39a5c..3565d547b25dd01edce92ab8203861b2ad26a0fd 100644
--- a/fda-metadata-db/querystore/src/main/java/at/tuwien/querystore/Query.java
+++ b/fda-metadata-db/querystore/src/main/java/at/tuwien/querystore/Query.java
@@ -79,7 +79,7 @@ public class Query implements Serializable {
     @javax.persistence.Column(nullable = false)
     private Long createdBy;
 
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     private List<at.tuwien.querystore.Table> tables;
 
     @javax.persistence.Column(name = "last_modified")
diff --git a/fda-metadata-db/querystore/src/main/java/at/tuwien/querystore/Table.java b/fda-metadata-db/querystore/src/main/java/at/tuwien/querystore/Table.java
index c4628e1185ebbae3eb3cb39d6c45644853668f85..88f672568f499b42102d2ff06d2794d56ad973c0 100644
--- a/fda-metadata-db/querystore/src/main/java/at/tuwien/querystore/Table.java
+++ b/fda-metadata-db/querystore/src/main/java/at/tuwien/querystore/Table.java
@@ -35,7 +35,7 @@ public class Table implements Serializable {
     @javax.persistence.Column(nullable = false)
     private Long dbid;
 
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     private List<at.tuwien.querystore.Column> columns;
 
     @javax.persistence.Column(nullable = false, updatable = false)