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 e3aa0e2d0b03829fc2dd1823e85ff948d1457fb9..fd5edb1c0ed43228ecc3c6c909325931f8139c47 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 @@ -146,6 +146,7 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple @Override public Object doInHibernate(Session session) throws HibernateException { + InQuery inQuery = new InQuery<Long, Number>(); List<Number> list = inQuery.withBatch(session, "select distinct samp_id from data where samp_id in (:sampleIds)", "sampleIds", sampleIds, @@ -1343,6 +1344,23 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple scheduleDynamicPropertiesEvaluation(Arrays.asList(entity)); } + @Override + protected void scheduleDynamicPropertiesEvaluation(List<DataPE> dataSets) + { + List<DataPE> toUpdate = new ArrayList<DataPE>(); + addAllDataSetsAndComponentsRecursively(toUpdate, dataSets); + super.scheduleDynamicPropertiesEvaluation(toUpdate); + } + + private void addAllDataSetsAndComponentsRecursively(List<DataPE> resultDataSets, List<DataPE> dataSets) + { + for (DataPE dataSet : dataSets) + { + resultDataSets.add(dataSet); + addAllDataSetsAndComponentsRecursively(resultDataSets, dataSet.getContainedDataSets()); + } + } + @Override public List<TechId> listDataSetIdsBySampleIds(final Collection<TechId> samples) {