From 3820d69d2502c5b2ca7c1e558350cc4c67ff7659 Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Tue, 14 Mar 2017 13:45:37 +0000
Subject: [PATCH] SSDM-4682 : bugix, openBIS empty trashcan breaks when num
 entities over 2-byte due to SQL IN

SVN: 37895
---
 .../dataaccess/db/EntityPropertyTypeDAO.java     | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityPropertyTypeDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityPropertyTypeDAO.java
index 7f4ef6074dc..1dc3aa1d9ab 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityPropertyTypeDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityPropertyTypeDAO.java
@@ -279,12 +279,16 @@ final class EntityPropertyTypeDAO extends AbstractDAO implements IEntityProperty
                         default:
                             throw new IllegalArgumentException(entityKind.toString());
                     }
-                    SQLQuery updateQuery =
-                            session.createSQLQuery(
-                                    "update " + entityTableName + " set modification_timestamp = :timestamp where id in :entityIds ");
-                    updateQuery.setTimestamp("timestamp", getTransactionTimeStamp());
-                    updateQuery.setParameterList("entityIds", entityIds);
-                    updateQuery.executeUpdate();
+                    InQueryScroller<Long> updateQueryScroller = new InQueryScroller(entityIds, 1);
+                    List<Long> partialEntityId;
+                    while ((partialEntityId = updateQueryScroller.next()) != null)
+                    {
+                        SQLQuery updateQuery = session
+                                .createSQLQuery("update " + entityTableName + " set modification_timestamp = :timestamp where id in :entityIds ");
+                        updateQuery.setTimestamp("timestamp", getTransactionTimeStamp());
+                        updateQuery.setParameterList("entityIds", partialEntityId);
+                        updateQuery.executeUpdate();
+                    }
                     return null;
                 }
             });
-- 
GitLab