private Map checkNamedQueries() throws HibernateException { Map errors = new HashMap(); // Check named HQL queries log.debug("Checking " + namedQueries.size() + " named HQL queries"); Iterator itr = namedQueries.entrySet().iterator(); while (itr.hasNext()) { final Map.Entry entry = (Map.Entry) itr.next(); final String queryName = (String) entry.getKey(); final NamedQueryDefinition qd = (NamedQueryDefinition) entry.getValue(); // this will throw an error if there's something wrong. try { log.debug("Checking named query: " + queryName); // TODO: BUG! this currently fails for named queries for non-POJO entities queryPlanCache.getHQLQueryPlan(qd.getQueryString(), false, CollectionHelper.EMPTY_MAP); } catch (QueryException e) { errors.put(queryName, e); } catch (MappingException e) { errors.put(queryName, e); } } log.debug("Checking " + namedSqlQueries.size() + " named SQL queries"); itr = namedSqlQueries.entrySet().iterator(); while (itr.hasNext()) { final Map.Entry entry = (Map.Entry) itr.next(); final String queryName = (String) entry.getKey(); final NamedSQLQueryDefinition qd = (NamedSQLQueryDefinition) entry.getValue(); // this will throw an error if there's something wrong. try { log.debug("Checking named SQL query: " + queryName); // TODO : would be really nice to cache the spec on the query-def so as to not have to // re-calc the hash; // currently not doable though because of the resultset-ref stuff... NativeSQLQuerySpecification spec; if (qd.getResultSetRef() != null) { ResultSetMappingDefinition definition = (ResultSetMappingDefinition) sqlResultSetMappings.get(qd.getResultSetRef()); if (definition == null) { throw new MappingException( "Unable to find resultset-ref definition: " + qd.getResultSetRef()); } spec = new NativeSQLQuerySpecification( qd.getQueryString(), definition.getQueryReturns(), qd.getQuerySpaces()); } else { spec = new NativeSQLQuerySpecification( qd.getQueryString(), qd.getQueryReturns(), qd.getQuerySpaces()); } queryPlanCache.getNativeSQLQueryPlan(spec); } catch (QueryException e) { errors.put(queryName, e); } catch (MappingException e) { errors.put(queryName, e); } } return errors; }