Package org.hibernate.hql.spi.id
Class AbstractTableBasedBulkIdHandler
- java.lang.Object
-
- org.hibernate.hql.spi.id.AbstractTableBasedBulkIdHandler
-
- Direct Known Subclasses:
AbstractIdsBulkIdHandler
,TableBasedDeleteHandlerImpl
,TableBasedUpdateHandlerImpl
public abstract class AbstractTableBasedBulkIdHandler extends java.lang.Object
Convenience base class forMultiTableBulkIdStrategy.UpdateHandler
andMultiTableBulkIdStrategy.DeleteHandler
implementations throughTableBasedUpdateHandlerImpl
andTableBasedDeleteHandlerImpl
respectively. Mainly supports common activities like:- processing the original
WHERE
clause (if one) -processWhereClause(antlr.collections.AST)
- generating the proper
SELECT
clause for the id-table insert -generateIdInsertSelect(java.lang.String, org.hibernate.hql.spi.id.IdTableInfo, org.hibernate.hql.spi.id.AbstractTableBasedBulkIdHandler.ProcessedWhereClause)
- generating the sub-select from the id-table -
generateIdSubselect(org.hibernate.persister.entity.Queryable, org.hibernate.hql.spi.id.IdTableInfo)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
AbstractTableBasedBulkIdHandler.ProcessedWhereClause
-
Constructor Summary
Constructors Constructor Description AbstractTableBasedBulkIdHandler(SessionFactoryImplementor sessionFactory, org.hibernate.hql.internal.ast.HqlSqlWalker walker)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
addAnyExtraIdSelectValues(SelectValues selectClause)
Used fromgenerateIdInsertSelect(java.lang.String, org.hibernate.hql.spi.id.IdTableInfo, org.hibernate.hql.spi.id.AbstractTableBasedBulkIdHandler.ProcessedWhereClause)
to allow subclasses to define any extra values to be selected (and therefore stored into the bulk-id table).protected SessionFactoryImplementor
factory()
protected java.lang.String
generateIdInsertSelect(java.lang.String tableAlias, IdTableInfo idTableInfo, AbstractTableBasedBulkIdHandler.ProcessedWhereClause whereClause)
Generate theINSERT
-SELECT
statement for holding matching ids.protected Select
generateIdSelect(java.lang.String tableAlias, AbstractTableBasedBulkIdHandler.ProcessedWhereClause whereClause)
protected java.lang.String
generateIdSubselect(Queryable persister, IdTableInfo idTableInfo)
abstract Queryable
getTargetedQueryable()
protected void
prepareForUse(Queryable persister, SharedSessionContractImplementor session)
protected AbstractTableBasedBulkIdHandler.ProcessedWhereClause
processWhereClause(antlr.collections.AST whereClause)
Interprets theWHERE
clause from the user-defined update/delete queryprotected void
releaseFromUse(Queryable persister, SharedSessionContractImplementor session)
protected org.hibernate.hql.internal.ast.HqlSqlWalker
walker()
-
-
-
Constructor Detail
-
AbstractTableBasedBulkIdHandler
public AbstractTableBasedBulkIdHandler(SessionFactoryImplementor sessionFactory, org.hibernate.hql.internal.ast.HqlSqlWalker walker)
-
-
Method Detail
-
factory
protected SessionFactoryImplementor factory()
-
walker
protected org.hibernate.hql.internal.ast.HqlSqlWalker walker()
-
getTargetedQueryable
public abstract Queryable getTargetedQueryable()
-
processWhereClause
protected AbstractTableBasedBulkIdHandler.ProcessedWhereClause processWhereClause(antlr.collections.AST whereClause)
Interprets theWHERE
clause from the user-defined update/delete query- Parameters:
whereClause
- The user-definedWHERE
clause- Returns:
- The bulk-id-ready
WHERE
clause representation
-
generateIdInsertSelect
protected java.lang.String generateIdInsertSelect(java.lang.String tableAlias, IdTableInfo idTableInfo, AbstractTableBasedBulkIdHandler.ProcessedWhereClause whereClause)
Generate theINSERT
-SELECT
statement for holding matching ids. This is theINSERT
used to populate the bulk-id table with ids matching the restrictions defined in the originalWHERE
clause- Parameters:
tableAlias
- The table alias to use for the entitywhereClause
- The processed representation for the user-definedWHERE
clause.- Returns:
- The
INSERT
-SELECT
for populating the bulk-id table.
-
generateIdSelect
protected Select generateIdSelect(java.lang.String tableAlias, AbstractTableBasedBulkIdHandler.ProcessedWhereClause whereClause)
-
addAnyExtraIdSelectValues
protected void addAnyExtraIdSelectValues(SelectValues selectClause)
Used fromgenerateIdInsertSelect(java.lang.String, org.hibernate.hql.spi.id.IdTableInfo, org.hibernate.hql.spi.id.AbstractTableBasedBulkIdHandler.ProcessedWhereClause)
to allow subclasses to define any extra values to be selected (and therefore stored into the bulk-id table). Used to store session identifier, e.g.- Parameters:
selectClause
- The SelectValues that defines the select clause of the insert statement.
-
generateIdSubselect
protected java.lang.String generateIdSubselect(Queryable persister, IdTableInfo idTableInfo)
-
prepareForUse
protected void prepareForUse(Queryable persister, SharedSessionContractImplementor session)
-
releaseFromUse
protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session)
-
-