\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