コード例 #1
0
  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;
  }