fixing loadRankSpecificRootNodes
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / persistence / dao / hibernate / taxon / TaxonomicTreeDaoHibernateImpl.java
index e90bf6b01523e9e69db079a096b322dd3261648c..d35334233b22ade82a5827374769e6f362ebf285 100644 (file)
@@ -45,14 +45,17 @@ public class TaxonomicTreeDaoHibernateImpl extends IdentifiableDaoBase<Taxonomic
        \r
        @SuppressWarnings("unchecked")\r
        public List<TaxonNode> loadRankSpecificRootNodes(TaxonomicTree taxonomicTree, Rank rank, List<String> propertyPaths){\r
-               String hql = "SELECT DISTINCT tn FROM TaxonNode tn LEFT JOIN tn.childNodes as ctn" +\r
+               String hql = "SELECT DISTINCT tn FROM TaxonNode tn" +\r
+                               " LEFT JOIN tn.childNodes as ctn" +\r
+                               " LEFT JOIN tn.taxon.name.rank as r" +\r
                                " WHERE tn.taxonomicTree = :tree  AND (" +\r
-                               " tn.taxon.name.rank = :rank" +\r
-                               " OR (tn.taxon.name.rank < :rank AND tn.parent = null)" +\r
-                               " OR (tn.taxon.name.rank > :rank AND ctn.taxon.name.rank < :rank)" +\r
+                               " r = :rank" +\r
+                               " OR (r.orderIndex > :rank_orderIndex AND tn.parent = null)" +\r
+                               " OR (r.orderIndex < :rank_orderIndex AND ctn.taxon.name.rank.orderIndex > :rank_orderIndex)" +\r
                                " )";\r
                Query query = getSession().createQuery(hql);\r
                query.setParameter("rank", rank);\r
+               query.setParameter("rank_orderIndex", rank.getOrderIndex());\r
                query.setParameter("tree", taxonomicTree);\r
                List<TaxonNode> results = query.list();\r
                defaultBeanInitializer.initializeAll(results, propertyPaths);\r