"left outer join fetch e.group " + "left outer join fetch e.groups " +
"left outer join fetch e.groupExperimenterMap gs " + "left outer join fetch gs.child g " +
    public Map getUserDetails(@NotNull @Validate(String.class) Set names,             Map options)    {                List results;        Map<String, Experimenter> map = new HashMap<String, Experimenter>();                /* query only if we have some ids */        if (names.size() > 0)        {            Map<String, Set> params = new HashMap<String, Set>();            params.put("name_list",names);                    results = iQuery.queryListMap(                    "select e from Experimenter e " +                    "left outer join fetch e.group " +                    "left outer join fetch e.groups " +                    "where e.omeName in ( :name_list )",                    params            );                        for (Object object : results)            {                Experimenter e = (Experimenter) object;                map.put(e.getOmeName(),e);            }        }                /* ensures all ids appear in map */        for (Object object : names)        {            String name = (String) object;            if (! map.containsKey(name)){                map.put(name,null);            }        }                        return map;            }