From cc9316c4921ceaba80b82f9d1b10319dc47d874d Mon Sep 17 00:00:00 2001
From: felmer <franz-josef.elmer@id.ethz.ch>
Date: Mon, 9 Dec 2019 11:46:05 +0100
Subject: [PATCH] SSDM-9096: DataDAO.mapDataSetIdsByChildrenIds() reads data in
 batches

---
 .../generic/server/dataaccess/db/DataDAO.java  | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java
index 7c7c9eff3f6..c0030f12e56 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java
@@ -739,11 +739,6 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple
 
         lockRelatedEntities(dataset);
         getHibernateTemplate().saveOrUpdate(dataset);
-
-        if (operationLog.isInfoEnabled())
-        {
-            operationLog.info(String.format("ADD: data set '%s'.", dataset));
-        }
     }
 
     private void lockRelatedEntities(DataPE data)
@@ -1183,12 +1178,13 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple
                 @Override
                 public final Object doInHibernate(final Session session)
                 {
-                    SQLQuery query =
-                            session.createSQLQuery("select data_id_child, data_id_parent from " + TableNames.DATA_SET_RELATIONSHIPS_VIEW
-                                    + " where relationship_id = :relationship and data_id_child in (:children)");
-                    query.setParameterList("children", children);
-                    query.setParameter("relationship", relationship);
-                    return query.list();
+                    InQuery<Long, Object> inQuery = new InQuery<>();
+                    Map<String, Object> fixParams = new HashMap<String, Object>();
+                    fixParams.put("relationship", relationship);
+
+                    String query = "select data_id_child, data_id_parent from " + TableNames.DATA_SET_RELATIONSHIPS_VIEW
+                            + " where relationship_id = :relationship and data_id_child in (:children)";
+                    return inQuery.withBatch(session, query, "children", new ArrayList<>(children), fixParams);
                 }
             });
 
-- 
GitLab