Skip to content
Snippets Groups Projects
Commit 2ea19fdd authored by juanf's avatar juanf
Browse files

SSDM-4682 : bugix, openBIS empty trashcan breaks when num entities over 2-byte due to SQL IN

SVN: 37868
parent 3ad93d23
No related branches found
No related tags found
No related merge requests found
package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class InQueryScroller<I>
......@@ -12,9 +14,9 @@ public class InQueryScroller<I>
private int fixParamsSize;
public InQueryScroller(List<I> inArguments, int fixParamsSize)
public InQueryScroller(Collection<I> inArguments, int fixParamsSize)
{
this.inArguments = inArguments;
this.inArguments = new ArrayList<>(inArguments);
this.fromIndex = 0;
this.fixParamsSize = fixParamsSize;
}
......
......@@ -186,18 +186,27 @@ public class MetaprojectDAO extends AbstractGenericEntityDAO<MetaprojectPE> impl
{
return Collections.emptySet();
}
final DetachedCriteria criteria = DetachedCriteria.forClass(MetaprojectAssignmentPE.class);
criteria.createAlias("metaproject", "m");
criteria.add(Restrictions.eq("m.owner", owner));
criteria.add(Restrictions.in(entityKind.getLabel(), entities));
criteria.setFetchMode("experiment", FetchMode.SELECT);
criteria.setFetchMode("sample", FetchMode.SELECT);
criteria.setFetchMode("dataSet", FetchMode.SELECT);
criteria.setFetchMode("material", FetchMode.SELECT);
final List<MetaprojectAssignmentPE> assignments = new ArrayList<>();
final List<MetaprojectAssignmentPE> assignments =
cast(getHibernateTemplate().findByCriteria(criteria));
InQueryScroller<? extends IEntityInformationWithPropertiesHolder> entitiesScroller = new InQueryScroller<>(entities, 1);
List<? extends IEntityInformationWithPropertiesHolder> partialEntities = null;
while ((partialEntities = entitiesScroller.next()) != null)
{
final DetachedCriteria criteria = DetachedCriteria.forClass(MetaprojectAssignmentPE.class);
criteria.createAlias("metaproject", "m");
criteria.add(Restrictions.eq("m.owner", owner));
criteria.add(Restrictions.in(entityKind.getLabel(), partialEntities));
criteria.setFetchMode("experiment", FetchMode.SELECT);
criteria.setFetchMode("sample", FetchMode.SELECT);
criteria.setFetchMode("dataSet", FetchMode.SELECT);
criteria.setFetchMode("material", FetchMode.SELECT);
final List<MetaprojectAssignmentPE> partialAssignments = cast(getHibernateTemplate().findByCriteria(criteria));
assignments.addAll(partialAssignments);
}
if (operationLog.isDebugEnabled())
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment