From 6d084a2727175220e011bba437a2fe01fc8f1276 Mon Sep 17 00:00:00 2001
From: anttil <anttil>
Date: Fri, 14 Dec 2012 08:00:50 +0000
Subject: [PATCH] BIS-294 / SP-440: Added FetchMode definitions to sample and
 metaproject DAOs to make database queries less complex (and thus, faster)

SVN: 27930
---
 .../server/dataaccess/db/AbstractGenericEntityDAO.java      | 2 +-
 .../generic/server/dataaccess/db/MetaprojectDAO.java        | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java
index 31ad3f49952..d0cdbff064a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java
@@ -107,7 +107,7 @@ public abstract class AbstractGenericEntityDAO<T extends IIdHolder> extends Abst
         criteria.add(Restrictions.eq("id", techId.getId()));
         for (String connection : connections)
         {
-            criteria.setFetchMode(connection, FetchMode.JOIN);
+            criteria.setFetchMode(connection, FetchMode.SELECT);
         }
         final T result = tryGetEntity(criteria.uniqueResult());
         if (operationLog.isDebugEnabled())
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MetaprojectDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MetaprojectDAO.java
index d6e04af76da..c4f51407518 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MetaprojectDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MetaprojectDAO.java
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.log4j.Logger;
+import org.hibernate.FetchMode;
 import org.hibernate.SessionFactory;
 import org.hibernate.criterion.DetachedCriteria;
 import org.hibernate.criterion.Order;
@@ -124,6 +125,11 @@ public class MetaprojectDAO extends AbstractGenericEntityDAO<MetaprojectPE> impl
         criteria.createAlias("metaproject", "m");
         criteria.add(Restrictions.eq("m.owner", owner));
         criteria.add(Restrictions.eq(entity.getEntityKind().getLabel(), entity));
+        criteria.setFetchMode("experiment", FetchMode.SELECT);
+        criteria.setFetchMode("dataSet", FetchMode.SELECT);
+        criteria.setFetchMode("material", FetchMode.SELECT);
+        criteria.setFetchMode("sample", FetchMode.SELECT);
+
         final List<MetaprojectAssignmentPE> assignments =
                 cast(getHibernateTemplate().findByCriteria(criteria));
 
-- 
GitLab