From 4c653fc12861a6bad5f0c00fea534d40a84f4e19 Mon Sep 17 00:00:00 2001 From: Andreas Kohlbecker Date: Mon, 15 Feb 2010 10:47:21 +0000 Subject: [PATCH] fixing loadRankSpecificRootNodes --- .../taxon/TaxonomicTreeDaoHibernateImpl.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonomicTreeDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonomicTreeDaoHibernateImpl.java index e90bf6b015..d35334233b 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonomicTreeDaoHibernateImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonomicTreeDaoHibernateImpl.java @@ -45,14 +45,17 @@ public class TaxonomicTreeDaoHibernateImpl extends IdentifiableDaoBase loadRankSpecificRootNodes(TaxonomicTree taxonomicTree, Rank rank, List propertyPaths){ - String hql = "SELECT DISTINCT tn FROM TaxonNode tn LEFT JOIN tn.childNodes as ctn" + + String hql = "SELECT DISTINCT tn FROM TaxonNode tn" + + " LEFT JOIN tn.childNodes as ctn" + + " LEFT JOIN tn.taxon.name.rank as r" + " WHERE tn.taxonomicTree = :tree AND (" + - " tn.taxon.name.rank = :rank" + - " OR (tn.taxon.name.rank < :rank AND tn.parent = null)" + - " OR (tn.taxon.name.rank > :rank AND ctn.taxon.name.rank < :rank)" + + " r = :rank" + + " OR (r.orderIndex > :rank_orderIndex AND tn.parent = null)" + + " OR (r.orderIndex < :rank_orderIndex AND ctn.taxon.name.rank.orderIndex > :rank_orderIndex)" + " )"; Query query = getSession().createQuery(hql); query.setParameter("rank", rank); + query.setParameter("rank_orderIndex", rank.getOrderIndex()); query.setParameter("tree", taxonomicTree); List results = query.list(); defaultBeanInitializer.initializeAll(results, propertyPaths); -- 2.34.1