private void mergeJoins(JoinFragment ojf) throws MappingException, QueryException { Iterator iter = joins.entrySet().iterator(); while (iter.hasNext()) { Map.Entry me = (Map.Entry) iter.next(); String name = (String) me.getKey(); JoinSequence join = (JoinSequence) me.getValue(); join.setSelector( new JoinSequence.Selector() { public boolean includeSubclasses(String alias) { boolean include = returnedTypes.contains(alias) && !isShallowQuery(); return include; } }); if (typeMap.containsKey(name)) { ojf.addFragment(join.toJoinFragment(enabledFilters, true)); } else if (collections.containsKey(name)) { ojf.addFragment(join.toJoinFragment(enabledFilters, true)); } else { // name from a super query (a bit inelegant that it shows up here) } } }