diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
index 801dee8af00304a9adb10a796d1c74bcf5e04534..98bce2d45b4cf161431d4d090dfe74835366ece0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
@@ -419,6 +419,7 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
     }
 
     // used only by Hibernate Search
+    @SuppressWarnings("unused")
     @Transient
     @Field(index = Index.UN_TOKENIZED, store = Store.YES, name = SearchFieldConstants.SAMPLE_ID)
     private Long getSampleId()
@@ -522,6 +523,7 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
     }
 
     // used only by Hibernate Search
+    @SuppressWarnings("unused")
     @Transient
     @Field(index = Index.UN_TOKENIZED, store = Store.YES, name = SearchFieldConstants.CONTAINER_ID)
     private Long getContainerId()
@@ -630,6 +632,7 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
     }
 
     // used only by Hibernate Search
+    @SuppressWarnings("unused")
     @Transient
     @Field(index = Index.UN_TOKENIZED, store = Store.YES, name = SearchFieldConstants.EXPERIMENT_ID)
     private Long getExperimentId()
@@ -812,7 +815,9 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
         this.deletion = deletion;
     }
 
-    @ManyToMany(fetch = FetchType.LAZY)
+    // used only by Hibernate Search
+    @SuppressWarnings("unused")
+    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @Fetch(FetchMode.SUBSELECT)
     @JoinTable(name = TableNames.METAPROJECT_ASSIGNMENTS_VIEW, joinColumns =
         { @JoinColumn(name = ColumnNames.DATA_ID_COLUMN) }, inverseJoinColumns =
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentPE.java
index aa52fae658bc11b25c923e13f79c97bedcf7b51e..f37d94c4fad8c4f977122d4d5b0922e4c2485632 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentPE.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentPE.java
@@ -554,7 +554,9 @@ public class ExperimentPE extends AttachmentHolderPE implements
         this.permId = permId;
     }
 
-    @ManyToMany(fetch = FetchType.LAZY)
+    // used only by Hibernate Search
+    @SuppressWarnings("unused")
+    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @Fetch(FetchMode.SUBSELECT)
     @JoinTable(name = TableNames.METAPROJECT_ASSIGNMENTS_VIEW, joinColumns =
         { @JoinColumn(name = ColumnNames.EXPERIMENT_COLUMN) }, inverseJoinColumns =
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialPE.java
index ac216f9baa04c82360aaf3e06b77112ac3c711b6..540a4b8e2dd748584b320aacf7a14d7b9dbc6683 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialPE.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialPE.java
@@ -382,7 +382,9 @@ public class MaterialPE implements IIdAndCodeHolder, Comparable<MaterialPE>,
         return createPermId(code, materialType.getCode());
     }
 
-    @ManyToMany(fetch = FetchType.LAZY)
+    // used only by Hibernate Search
+    @SuppressWarnings("unused")
+    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @Fetch(FetchMode.SUBSELECT)
     @JoinTable(name = TableNames.METAPROJECT_ASSIGNMENTS_VIEW, joinColumns =
         { @JoinColumn(name = ColumnNames.MATERIAL_COLUMN) }, inverseJoinColumns =
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java
index fa8a25f4cdf915b85217d79f9492de04dd81968b..0e3e80c6c9d8f354ad3cca27284b0d4f81b0257c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java
@@ -388,6 +388,7 @@ public class SamplePE extends AttachmentHolderPE implements IIdAndCodeHolder, Co
     }
 
     // used only by Hibernate Search
+    @SuppressWarnings("unused")
     @Transient
     @Field(index = Index.UN_TOKENIZED, store = Store.YES, name = SearchFieldConstants.CONTAINER_ID)
     private Long getContainerId()
@@ -488,6 +489,7 @@ public class SamplePE extends AttachmentHolderPE implements IIdAndCodeHolder, Co
     }
 
     // used only by Hibernate Search
+    @SuppressWarnings("unused")
     @Transient
     @Field(index = Index.UN_TOKENIZED, store = Store.YES, name = SearchFieldConstants.EXPERIMENT_ID)
     private Long getExperimentId()
@@ -525,6 +527,7 @@ public class SamplePE extends AttachmentHolderPE implements IIdAndCodeHolder, Co
     }
 
     // used only by Hibernate Search
+    @SuppressWarnings("unused")
     @Transient
     @Field(index = Index.TOKENIZED, store = Store.YES, name = SearchFieldConstants.CODE)
     private String getFullCode()
@@ -809,7 +812,9 @@ public class SamplePE extends AttachmentHolderPE implements IIdAndCodeHolder, Co
         return map;
     }
 
-    @ManyToMany(fetch = FetchType.LAZY)
+    // used only by Hibernate Search
+    @SuppressWarnings("unused")
+    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @Fetch(FetchMode.SUBSELECT)
     @JoinTable(name = TableNames.METAPROJECT_ASSIGNMENTS_VIEW, joinColumns =
         { @JoinColumn(name = ColumnNames.SAMPLE_COLUMN) }, inverseJoinColumns =