Java 类org.hibernate.hql.internal.ast.HqlSqlWalker 实例源码

项目:lams    文件:EntityGraphQueryHint.java   
public List<FromElement> toFromElements(FromClause fromClause, HqlSqlWalker walker) {
    // If a role already has an explicit fetch in the query, skip it in the graph.
    Map<String, FromElement> explicitFetches = new HashMap<String, FromElement>();
    for ( Object o : fromClause.getFromElements() ) {
        final FromElement fromElement = (FromElement) o;
        if ( fromElement.getRole() != null ) {
            explicitFetches.put( fromElement.getRole(), fromElement );
        }
    }

    return getFromElements(
            originEntityGraph.getAttributeNodes(),
            fromClause.getFromElement(),
            fromClause,
            walker,
            explicitFetches
    );
}
项目:lams    文件:AbstractTableBasedBulkIdHandler.java   
public AbstractTableBasedBulkIdHandler(
        SessionFactoryImplementor sessionFactory,
        HqlSqlWalker walker,
        String catalog,
        String schema) {
    this.sessionFactory = sessionFactory;
    this.walker = walker;
    this.catalog = catalog;
    this.schema = schema;
}
项目:lams    文件:BasicExecutor.java   
public BasicExecutor(HqlSqlWalker walker, Queryable persister) {
    this.factory = walker.getSessionFactoryHelper().getFactory();
    this.persister = persister;
    try {
        SqlGenerator gen = new SqlGenerator( factory );
        gen.statement( walker.getAST() );
        sql = gen.getSQL();
        gen.getParseErrorHandler().throwQueryException();
        parameterSpecifications = gen.getCollectedParameters();
    }
    catch ( RecognitionException e ) {
        throw QuerySyntaxException.convert( e );
    }
}
项目:lams    文件:MultiTableUpdateExecutor.java   
public MultiTableUpdateExecutor(HqlSqlWalker walker) {
    MultiTableBulkIdStrategy strategy = walker.getSessionFactoryHelper()
            .getFactory()
            .getSettings()
            .getMultiTableBulkIdStrategy();
    this.updateHandler = strategy.buildUpdateHandler( walker.getSessionFactoryHelper().getFactory(), walker );
}
项目:cte-multi-table-bulk-id-stategy    文件:AbstractCTEBasedBulkIdHandler.java   
public AbstractCTEBasedBulkIdHandler(
        SessionFactoryImplementor sessionFactory, HqlSqlWalker walker,
        String catalog, String schema) {
    this.sessionFactory = sessionFactory;
    this.walker = walker;
    this.catalog = catalog;
    this.schema = schema;
}
项目:cte-multi-table-bulk-id-stategy    文件:AbstractCTEBasedBulkIdHandler.java   
public AbstractCTEBasedBulkIdHandler(
        SessionFactoryImplementor sessionFactory, HqlSqlWalker walker,
        String catalog, String schema) {
    this.sessionFactory = sessionFactory;
    this.walker = walker;
    this.catalog = catalog;
    this.schema = schema;
}
项目:lams    文件:TableBasedDeleteHandlerImpl.java   
public TableBasedDeleteHandlerImpl(SessionFactoryImplementor factory, HqlSqlWalker walker) {
    this( factory, walker, null, null );
}
项目:lams    文件:TableBasedDeleteHandlerImpl.java   
public TableBasedDeleteHandlerImpl(
        SessionFactoryImplementor factory,
        HqlSqlWalker walker,
        String catalog,
        String schema) {
    super( factory, walker, catalog, schema );

    DeleteStatement deleteStatement = ( DeleteStatement ) walker.getAST();
    FromElement fromElement = deleteStatement.getFromClause().getFromElement();

    this.targetedPersister = fromElement.getQueryable();
    final String bulkTargetAlias = fromElement.getTableAlias();

    final ProcessedWhereClause processedWhereClause = processWhereClause( deleteStatement.getWhereClause() );
    this.idSelectParameterSpecifications = processedWhereClause.getIdSelectParameterSpecifications();
    this.idInsertSelect = generateIdInsertSelect( targetedPersister, bulkTargetAlias, processedWhereClause );
    log.tracev( "Generated ID-INSERT-SELECT SQL (multi-table delete) : {0}", idInsertSelect );

    final String idSubselect = generateIdSubselect( targetedPersister );
    deletes = new ArrayList<String>();

    // If many-to-many, delete the FK row in the collection table.
    // This partially overlaps with DeleteExecutor, but it instead uses the temp table in the idSubselect.
    for ( Type type : targetedPersister.getPropertyTypes() ) {
        if ( type.isCollectionType() ) {
            CollectionType cType = (CollectionType) type;
            AbstractCollectionPersister cPersister = (AbstractCollectionPersister)factory.getCollectionPersister( cType.getRole() );
            if ( cPersister.isManyToMany() ) {
                deletes.add( generateDelete( cPersister.getTableName(),
                        cPersister.getKeyColumnNames(), idSubselect, "bulk delete - m2m join table cleanup"));
            }
        }
    }

    String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
    String[][] columnNames = targetedPersister.getContraintOrderedTableKeyColumnClosure();
    for ( int i = 0; i < tableNames.length; i++ ) {
        // TODO : an optimization here would be to consider cascade deletes and not gen those delete statements;
        //      the difficulty is the ordering of the tables here vs the cascade attributes on the persisters ->
        //          the table info gotten here should really be self-contained (i.e., a class representation
        //          defining all the needed attributes), then we could then get an array of those
        deletes.add( generateDelete( tableNames[i], columnNames[i], idSubselect, "bulk delete"));
    }
}
项目:lams    文件:TableBasedUpdateHandlerImpl.java   
@SuppressWarnings("unchecked")
public TableBasedUpdateHandlerImpl(SessionFactoryImplementor factory, HqlSqlWalker walker) {
    this( factory, walker, null, null );
}
项目:lams    文件:TableBasedUpdateHandlerImpl.java   
public TableBasedUpdateHandlerImpl(
        SessionFactoryImplementor factory,
        HqlSqlWalker walker,
        String catalog,
        String schema) {
    super( factory, walker, catalog, schema );

    UpdateStatement updateStatement = ( UpdateStatement ) walker.getAST();
    FromElement fromElement = updateStatement.getFromClause().getFromElement();

    this.targetedPersister = fromElement.getQueryable();
    final String bulkTargetAlias = fromElement.getTableAlias();

    final ProcessedWhereClause processedWhereClause = processWhereClause( updateStatement.getWhereClause() );
    this.idSelectParameterSpecifications = processedWhereClause.getIdSelectParameterSpecifications();
    this.idInsertSelect = generateIdInsertSelect( targetedPersister, bulkTargetAlias, processedWhereClause );
    log.tracev( "Generated ID-INSERT-SELECT SQL (multi-table update) : {0}", idInsertSelect );

    String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
    String[][] columnNames = targetedPersister.getContraintOrderedTableKeyColumnClosure();
    String idSubselect = generateIdSubselect( targetedPersister );

    updates = new String[tableNames.length];
    assignmentParameterSpecifications = new ParameterSpecification[tableNames.length][];
    for ( int tableIndex = 0; tableIndex < tableNames.length; tableIndex++ ) {
        boolean affected = false;
        final List<ParameterSpecification> parameterList = new ArrayList<ParameterSpecification>();
        final Update update = new Update( factory().getDialect() )
                .setTableName( tableNames[tableIndex] )
                .setWhere( "(" + StringHelper.join( ", ", columnNames[tableIndex] ) + ") IN (" + idSubselect + ")" );
        if ( factory().getSettings().isCommentsEnabled() ) {
            update.setComment( "bulk update" );
        }
        final List<AssignmentSpecification> assignmentSpecifications = walker.getAssignmentSpecifications();
        for ( AssignmentSpecification assignmentSpecification : assignmentSpecifications ) {
            if ( assignmentSpecification.affectsTable( tableNames[tableIndex] ) ) {
                affected = true;
                update.appendAssignmentFragment( assignmentSpecification.getSqlAssignmentFragment() );
                if ( assignmentSpecification.getParameters() != null ) {
                    for ( int paramIndex = 0; paramIndex < assignmentSpecification.getParameters().length; paramIndex++ ) {
                        parameterList.add( assignmentSpecification.getParameters()[paramIndex] );
                    }
                }
            }
        }
        if ( affected ) {
            updates[tableIndex] = update.toStatementString();
            assignmentParameterSpecifications[tableIndex] = parameterList.toArray( new ParameterSpecification[parameterList.size()] );
        }
    }
}
项目:lams    文件:AbstractTableBasedBulkIdHandler.java   
protected HqlSqlWalker walker() {
    return walker;
}
项目:lams    文件:HqlSqlWalkerNode.java   
public void initialize(Object param) {
    walker = (HqlSqlWalker) param;
}
项目:lams    文件:HqlSqlWalkerNode.java   
public HqlSqlWalker getWalker() {
    return walker;
}
项目:lams    文件:DeleteExecutor.java   
public DeleteExecutor(HqlSqlWalker walker, Queryable persister) {
    super( walker, persister );

    final SessionFactoryImplementor factory = walker.getSessionFactoryHelper().getFactory();
    final Dialect dialect = factory.getDialect();

    try {
        final DeleteStatement deleteStatement = (DeleteStatement) walker.getAST();

        final String idSubselectWhere;
        if ( deleteStatement.hasWhereClause() ) {
            final AST whereClause = deleteStatement.getWhereClause();
            final SqlGenerator gen = new SqlGenerator( factory );
            gen.whereClause( whereClause );
            parameterSpecifications = gen.getCollectedParameters();
            idSubselectWhere = gen.getSQL().length() > 7 ? gen.getSQL() : "";
        }
        else {
            parameterSpecifications = new ArrayList<ParameterSpecification>();
            idSubselectWhere = "";
        }

        // If many-to-many, delete the FK row in the collection table.
        for ( Type type : persister.getPropertyTypes() ) {
            if ( type.isCollectionType() ) {
                final CollectionType cType = (CollectionType) type;
                final AbstractCollectionPersister cPersister = (AbstractCollectionPersister) factory
                        .getCollectionPersister( cType.getRole() );
                if ( cPersister.isManyToMany() ) {
                    if ( persister.getIdentifierColumnNames().length > 1
                            && !dialect.supportsTuplesInSubqueries() ) {
                        LOG.warn(
                                "This dialect is unable to cascade the delete into the many-to-many join table" +
                                " when the entity has multiple primary keys.  Either properly setup cascading on" +
                                " the constraints or manually clear the associations prior to deleting the entities."
                        );
                    }
                    else {
                        final String idSubselect = "(select "
                                + StringHelper.join( ", ", persister.getIdentifierColumnNames() ) + " from "
                                + persister.getTableName() + idSubselectWhere + ")";
                        final String where = "(" + StringHelper.join( ", ", cPersister.getKeyColumnNames() )
                                + ") in " + idSubselect;
                        final Delete delete = new Delete().setTableName( cPersister.getTableName() ).setWhere( where );
                        if ( factory.getSettings().isCommentsEnabled() ) {
                            delete.setComment( "delete FKs in join table" );
                        }
                        deletes.add( delete.toStatementString() );
                    }
                }
            }
        }
    }
    catch (RecognitionException e) {
        throw new HibernateException( "Unable to delete the FKs in the join table!", e );
    }
}
项目:lams    文件:MultiTableDeleteExecutor.java   
public MultiTableDeleteExecutor(HqlSqlWalker walker) {
    final MultiTableBulkIdStrategy strategy = walker.getSessionFactoryHelper().getFactory().getSettings()
            .getMultiTableBulkIdStrategy();
    this.deleteHandler = strategy.buildDeleteHandler( walker.getSessionFactoryHelper().getFactory(), walker );
}
项目:lams    文件:LiteralProcessor.java   
public LiteralProcessor(HqlSqlWalker hqlSqlWalker) {
    this.walker = hqlSqlWalker;
}
项目:lams    文件:SyntheticAndFactory.java   
public SyntheticAndFactory(HqlSqlWalker hqlSqlWalker) {
    this.hqlSqlWalker = hqlSqlWalker;
}
项目:lams    文件:JoinProcessor.java   
public static void processDynamicFilterParameters(
        final String sqlFragment,
        final ParameterContainer container,
        final HqlSqlWalker walker) {
    if ( walker.getEnabledFilters().isEmpty()
            && ( !hasDynamicFilterParam( sqlFragment ) )
            && ( !( hasCollectionFilterParam( sqlFragment ) ) ) ) {
        return;
    }

    Dialect dialect = walker.getSessionFactoryHelper().getFactory().getDialect();
    String symbols = ParserHelper.HQL_SEPARATORS + dialect.openQuote() + dialect.closeQuote();
    StringTokenizer tokens = new StringTokenizer( sqlFragment, symbols, true );
    StringBuilder result = new StringBuilder();

    while ( tokens.hasMoreTokens() ) {
        final String token = tokens.nextToken();
        if ( token.startsWith( ParserHelper.HQL_VARIABLE_PREFIX ) ) {
            final String filterParameterName = token.substring( 1 );
            final String[] parts = LoadQueryInfluencers.parseFilterParameterName( filterParameterName );
            final FilterImpl filter = (FilterImpl) walker.getEnabledFilters().get( parts[0] );
            final Object value = filter.getParameter( parts[1] );
            final Type type = filter.getFilterDefinition().getParameterType( parts[1] );
            final String typeBindFragment = StringHelper.join(
                    ",",
                    ArrayHelper.fillArray(
                            "?",
                            type.getColumnSpan( walker.getSessionFactoryHelper().getFactory() )
                    )
            );
            final String bindFragment;
            if ( value != null && Collection.class.isInstance( value ) ) {
                bindFragment = StringHelper.join(
                        ",",
                        ArrayHelper.fillArray( typeBindFragment, ( (Collection) value ).size() )
                );
            }
            else {
                bindFragment = typeBindFragment;
            }
            result.append( bindFragment );
            container.addEmbeddedParameter( new DynamicFilterParameterSpecification( parts[0], parts[1], type ) );
        }
        else {
            result.append( token );
        }
    }

    container.setText( result.toString() );
}
项目:cte-multi-table-bulk-id-stategy    文件:CTEBasedUpdateHandlerImpl.java   
public CTEBasedUpdateHandlerImpl(SessionFactoryImplementor factory,
        HqlSqlWalker walker) {
    this(factory, walker, null, null);
}
项目:cte-multi-table-bulk-id-stategy    文件:CTEBasedUpdateHandlerImpl.java   
public CTEBasedUpdateHandlerImpl(SessionFactoryImplementor factory,
                                 HqlSqlWalker walker, String catalog, String schema) {
    super(factory, walker, catalog, schema);

    UpdateStatement updateStatement = (UpdateStatement) walker.getAST();
    FromElement fromElement = updateStatement.getFromClause()
            .getFromElement();

    this.targetedPersister = fromElement.getQueryable();

    final ProcessedWhereClause processedWhereClause = processWhereClause(updateStatement
            .getWhereClause());
    this.idSelectParameterSpecifications = processedWhereClause
            .getIdSelectParameterSpecifications();

    final String bulkTargetAlias = fromElement.getTableAlias();

    this.idSelect = generateIdSelect(targetedPersister,
            bulkTargetAlias, processedWhereClause);

    String[] tableNames = targetedPersister
            .getConstraintOrderedTableNameClosure();
    String[][] columnNames = targetedPersister
            .getContraintOrderedTableKeyColumnClosure();
    String idSubselect = generateIdSubselect( targetedPersister);

    updates = new String[tableNames.length];
    assignmentParameterSpecifications = new ParameterSpecification[tableNames.length][];
    for (int tableIndex = 0; tableIndex < tableNames.length; tableIndex++) {
        boolean affected = false;
        final List<ParameterSpecification> parameterList = new ArrayList<ParameterSpecification>();
        final Update update = new Update( factory().getDialect())
                .setTableName(tableNames[tableIndex]).setWhere(
                        "("
                                + StringHelper.join( ", ",
                                                     columnNames[tableIndex]) + ") IN ("
                                + idSubselect + ")");
        if (factory().getSettings().isCommentsEnabled()) {
            update.setComment("bulk update");
        }
        final List<AssignmentSpecification> assignmentSpecifications = walker
                .getAssignmentSpecifications();
        for (AssignmentSpecification assignmentSpecification : assignmentSpecifications) {
            if (assignmentSpecification
                    .affectsTable(tableNames[tableIndex])) {
                affected = true;
                update.appendAssignmentFragment(assignmentSpecification
                        .getSqlAssignmentFragment());
                if (assignmentSpecification.getParameters() != null) {
                    for (int paramIndex = 0; paramIndex < assignmentSpecification
                            .getParameters().length; paramIndex++) {
                        parameterList.add(assignmentSpecification
                                .getParameters()[paramIndex]);
                    }
                }
            }
        }
        if (affected) {
            updates[tableIndex] = update.toStatementString();
            assignmentParameterSpecifications[tableIndex] = parameterList
                    .toArray(new ParameterSpecification[parameterList
                            .size()]);
        }
    }
}
项目:cte-multi-table-bulk-id-stategy    文件:CTEBasedDeleteHandlerImpl.java   
public CTEBasedDeleteHandlerImpl(SessionFactoryImplementor factory,
        HqlSqlWalker walker) {
    this(factory, walker, null, null);
}
项目:cte-multi-table-bulk-id-stategy    文件:CTEBasedDeleteHandlerImpl.java   
public CTEBasedDeleteHandlerImpl(SessionFactoryImplementor factory,
                                 HqlSqlWalker walker, String catalog, String schema) {
    super(factory, walker, catalog, schema);

    DeleteStatement deleteStatement = (DeleteStatement) walker.getAST();
    FromElement fromElement = deleteStatement.getFromClause()
            .getFromElement();

    this.targetedPersister = fromElement.getQueryable();

    final ProcessedWhereClause processedWhereClause = processWhereClause(deleteStatement
            .getWhereClause());
    this.idSelectParameterSpecifications = processedWhereClause
            .getIdSelectParameterSpecifications();

    final String bulkTargetAlias = fromElement.getTableAlias();

    this.idSelect = generateIdSelect(targetedPersister, bulkTargetAlias,
            processedWhereClause);

    final String idSubselect = generateIdSubselect( targetedPersister);
    deletes = new ArrayList<String>();

    // If many-to-many, delete the FK row in the collection table.
    // This partially overlaps with DeleteExecutor, but it instead uses the
    // temp table in the idSubselect.
    for (Type type : targetedPersister.getPropertyTypes()) {
        if (type.isCollectionType()) {
            CollectionType cType = (CollectionType) type;
            AbstractCollectionPersister cPersister = (AbstractCollectionPersister) factory
                    .getCollectionPersister(cType.getRole());
            if (cPersister.isManyToMany()) {
                deletes.add(generateDelete(cPersister.getTableName(),
                        cPersister.getKeyColumnNames(), idSubselect,
                        "bulk delete - m2m join table cleanup"));
            }
        }
    }

    String[] tableNames = targetedPersister
            .getConstraintOrderedTableNameClosure();
    String[][] columnNames = targetedPersister
            .getContraintOrderedTableKeyColumnClosure();
    for (int i = 0; i < tableNames.length; i++) {
        // TODO : an optimization here would be to consider cascade deletes
        // and not gen those delete statements;
        // the difficulty is the ordering of the tables here vs the cascade
        // attributes on the persisters ->
        // the table info gotten here should really be self-contained (i.e.,
        // a class representation
        // defining all the needed attributes), then we could then get an
        // array of those
        deletes.add(generateDelete(tableNames[i], columnNames[i],
                idSubselect, "bulk delete"));
    }
}
项目:cte-multi-table-bulk-id-stategy    文件:AbstractCTEBasedBulkIdHandler.java   
protected HqlSqlWalker walker() {
    return walker;
}
项目:cte-multi-table-bulk-id-stategy    文件:CTEBasedUpdateHandlerImpl.java   
public CTEBasedUpdateHandlerImpl(SessionFactoryImplementor factory,
        HqlSqlWalker walker) {
    this(factory, walker, null, null);
}
项目:cte-multi-table-bulk-id-stategy    文件:CTEBasedUpdateHandlerImpl.java   
public CTEBasedUpdateHandlerImpl(SessionFactoryImplementor factory,
        HqlSqlWalker walker, String catalog, String schema) {
    super(factory, walker, catalog, schema);

    UpdateStatement updateStatement = (UpdateStatement) walker.getAST();
    FromElement fromElement = updateStatement.getFromClause()
            .getFromElement();

    this.targetedPersister = fromElement.getQueryable();

    final ProcessedWhereClause processedWhereClause = processWhereClause(updateStatement
            .getWhereClause());
    this.idSelectParameterSpecifications = processedWhereClause
            .getIdSelectParameterSpecifications();

    final String bulkTargetAlias = fromElement.getTableAlias();

    this.idSelect = generateIdSelect(targetedPersister,
            bulkTargetAlias, processedWhereClause);

    String[] tableNames = targetedPersister
            .getConstraintOrderedTableNameClosure();
    String[][] columnNames = targetedPersister
            .getContraintOrderedTableKeyColumnClosure();
    String idSubselect = generateIdSubselect(targetedPersister);

    updates = new String[tableNames.length];
    assignmentParameterSpecifications = new ParameterSpecification[tableNames.length][];
    for (int tableIndex = 0; tableIndex < tableNames.length; tableIndex++) {
        boolean affected = false;
        final List<ParameterSpecification> parameterList = new ArrayList<ParameterSpecification>();
        final Update update = new Update(factory().getDialect())
                .setTableName(tableNames[tableIndex]).setWhere(
                        "("
                                + StringHelper.join(", ",
                                        columnNames[tableIndex]) + ") IN ("
                                + idSubselect + ")");
        if (factory().getSettings().isCommentsEnabled()) {
            update.setComment("bulk update");
        }
        final List<AssignmentSpecification> assignmentSpecifications = walker
                .getAssignmentSpecifications();
        for (AssignmentSpecification assignmentSpecification : assignmentSpecifications) {
            if (assignmentSpecification
                    .affectsTable(tableNames[tableIndex])) {
                affected = true;
                update.appendAssignmentFragment(assignmentSpecification
                        .getSqlAssignmentFragment());
                if (assignmentSpecification.getParameters() != null) {
                    for (int paramIndex = 0; paramIndex < assignmentSpecification
                            .getParameters().length; paramIndex++) {
                        parameterList.add(assignmentSpecification
                                .getParameters()[paramIndex]);
                    }
                }
            }
        }
        if (affected) {
            updates[tableIndex] = update.toStatementString();
            assignmentParameterSpecifications[tableIndex] = parameterList
                    .toArray(new ParameterSpecification[parameterList
                            .size()]);
        }
    }
}
项目:cte-multi-table-bulk-id-stategy    文件:CTEBasedDeleteHandlerImpl.java   
public CTEBasedDeleteHandlerImpl(SessionFactoryImplementor factory,
        HqlSqlWalker walker) {
    this(factory, walker, null, null);
}
项目:cte-multi-table-bulk-id-stategy    文件:CTEBasedDeleteHandlerImpl.java   
public CTEBasedDeleteHandlerImpl(SessionFactoryImplementor factory,
        HqlSqlWalker walker, String catalog, String schema) {
    super(factory, walker, catalog, schema);

    DeleteStatement deleteStatement = (DeleteStatement) walker.getAST();
    FromElement fromElement = deleteStatement.getFromClause()
            .getFromElement();

    this.targetedPersister = fromElement.getQueryable();

    final ProcessedWhereClause processedWhereClause = processWhereClause(deleteStatement
            .getWhereClause());
    this.idSelectParameterSpecifications = processedWhereClause
            .getIdSelectParameterSpecifications();

    final String bulkTargetAlias = fromElement.getTableAlias();

    this.idSelect = generateIdSelect(targetedPersister, bulkTargetAlias,
            processedWhereClause);

    final String idSubselect = generateIdSubselect(targetedPersister);
    deletes = new ArrayList<String>();

    // If many-to-many, delete the FK row in the collection table.
    // This partially overlaps with DeleteExecutor, but it instead uses the
    // temp table in the idSubselect.
    for (Type type : targetedPersister.getPropertyTypes()) {
        if (type.isCollectionType()) {
            CollectionType cType = (CollectionType) type;
            AbstractCollectionPersister cPersister = (AbstractCollectionPersister) factory
                    .getCollectionPersister(cType.getRole());
            if (cPersister.isManyToMany()) {
                deletes.add(generateDelete(cPersister.getTableName(),
                        cPersister.getKeyColumnNames(), idSubselect,
                        "bulk delete - m2m join table cleanup"));
            }
        }
    }

    String[] tableNames = targetedPersister
            .getConstraintOrderedTableNameClosure();
    String[][] columnNames = targetedPersister
            .getContraintOrderedTableKeyColumnClosure();
    for (int i = 0; i < tableNames.length; i++) {
        // TODO : an optimization here would be to consider cascade deletes
        // and not gen those delete statements;
        // the difficulty is the ordering of the tables here vs the cascade
        // attributes on the persisters ->
        // the table info gotten here should really be self-contained (i.e.,
        // a class representation
        // defining all the needed attributes), then we could then get an
        // array of those
        deletes.add(generateDelete(tableNames[i], columnNames[i],
                idSubselect, "bulk delete"));
    }
}
项目:cte-multi-table-bulk-id-stategy    文件:AbstractCTEBasedBulkIdHandler.java   
protected HqlSqlWalker walker() {
    return walker;
}
项目:lams    文件:MultiTableBulkIdStrategy.java   
/**
 * Build a handler capable of handling the bulk update indicated by the given walker.
 *
 * @param factory The SessionFactory
 * @param walker The AST walker, representing the update query
 *
 * @return The handler
 */
public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker);
项目:lams    文件:MultiTableBulkIdStrategy.java   
/**
 * Build a handler capable of handling the bulk delete indicated by the given walker.
 *
 * @param factory The SessionFactory
 * @param walker The AST walker, representing the delete query
 *
 * @return The handler
 */
public DeleteHandler buildDeleteHandler(SessionFactoryImplementor factory, HqlSqlWalker walker);
项目:lams    文件:Statement.java   
/**
 * Retreive the "phase 2" walker which generated this statement tree.
 *
 * @return The HqlSqlWalker instance which generated this statement tree.
 */
public HqlSqlWalker getWalker();
项目:lams    文件:JoinProcessor.java   
/**
 * Constructs a new JoinProcessor.
 *
 * @param walker The walker to which we are bound, giving us access to needed resources.
 */
public JoinProcessor(HqlSqlWalker walker) {
    this.walker = walker;
    this.syntheticAndFactory = new SyntheticAndFactory( walker );
}