Package org.hibernate.hql.ast.tree

Examples of org.hibernate.hql.ast.tree.QueryNode


    if ( log.isDebugEnabled() ) {
      log.debug( "processQuery() : " + query.toStringTree() );
    }

    try {
      QueryNode qn = ( QueryNode ) query;

      // Was there an explicit select expression?
      boolean explicitSelect = select != null && select.getNumberOfChildren() > 0;

      if ( !explicitSelect ) {
        // No explicit select expression; render the id and properties
        // projection lists for every persister in the from clause into
        // a single 'token node'.
        //TODO: the only reason we need this stuff now is collection filters,
        //      we should get rid of derived select clause completely!
        createSelectClauseFromFromClause( qn );
      }
      else {
        // Use the explicitly declared select expression; determine the
        // return types indicated by each select token
        useSelectClause( select );
      }

      // After that, process the JOINs.
      // Invoke a delegate to do the work, as this is farily complex.
      JoinProcessor joinProcessor = new JoinProcessor( this );
      joinProcessor.processJoins( qn );

      // Attach any mapping-defined "ORDER BY" fragments
      Iterator itr = qn.getFromClause().getProjectionList().iterator();
      while ( itr.hasNext() ) {
        final FromElement fromElement = ( FromElement ) itr.next();
//      if ( fromElement.isFetch() && fromElement.isCollectionJoin() ) {
        if ( fromElement.isFetch() && fromElement.getQueryableCollection() != null ) {
          // Does the collection referenced by this FromElement
          // specify an order-by attribute?  If so, attach it to
          // the query's order-by
          if ( fromElement.getQueryableCollection().hasOrdering() ) {
            String orderByFragment = fromElement
                .getQueryableCollection()
                .getSQLOrderByString( fromElement.getCollectionTableAlias() );
            qn.getOrderByClause().addOrderFragment( orderByFragment );
          }
          if ( fromElement.getQueryableCollection().hasManyToManyOrdering() ) {
            String orderByFragment = fromElement.getQueryableCollection()
                .getManyToManyOrderByString( fromElement.getTableAlias() );
            qn.getOrderByClause().addOrderFragment( orderByFragment );
          }
        }
      }
    }
    finally {
View Full Code Here

TOP

Related Classes of org.hibernate.hql.ast.tree.QueryNode

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.