Interface SqmMultiTableMutationStrategy
-
public interface SqmMultiTableMutationStrategyPluggable strategy for defining how mutation (`UPDATE` or `DELETE`) queries should be handled when the target entity is mapped to multiple tables via secondary tables or certain inheritance strategies. The main contracts here areexecuteUpdate(org.hibernate.query.sqm.tree.update.SqmUpdateStatement<?>, org.hibernate.query.sqm.internal.DomainParameterXref, org.hibernate.query.spi.DomainQueryExecutionContext)andexecuteDelete(org.hibernate.query.sqm.tree.delete.SqmDeleteStatement<?>, org.hibernate.query.sqm.internal.DomainParameterXref, org.hibernate.query.spi.DomainQueryExecutionContext).prepare(org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess, org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess)andrelease(org.hibernate.engine.spi.SessionFactoryImplementor, org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess)allow the strategy to perform any one time preparation and cleanup.- "API Note:"
- See
SqmMutationStrategyHelper.resolveStrategy(org.hibernate.mapping.RootClass, org.hibernate.metamodel.mapping.EntityMappingType, org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess)for standard resolution of the strategy to use for each hierarchy
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description intexecuteDelete(SqmDeleteStatement<?> sqmDeleteStatement, org.hibernate.query.sqm.internal.DomainParameterXref domainParameterXref, DomainQueryExecutionContext context)Execute the multi-table update indicated by the passed SqmUpdateStatementintexecuteUpdate(SqmUpdateStatement<?> sqmUpdateStatement, org.hibernate.query.sqm.internal.DomainParameterXref domainParameterXref, DomainQueryExecutionContext context)Execute the multi-table update indicated by the passed SqmUpdateStatementdefault voidprepare(org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess mappingModelCreationProcess, JdbcConnectionAccess connectionAccess)Prepare the strategy for use.default voidrelease(SessionFactoryImplementor sessionFactory, JdbcConnectionAccess connectionAccess)Release the strategy.
-
-
-
Method Detail
-
prepare
default void prepare(org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess mappingModelCreationProcess, JdbcConnectionAccess connectionAccess)Prepare the strategy for use. Called one time as the SessionFactory is being built.
-
release
default void release(SessionFactoryImplementor sessionFactory, JdbcConnectionAccess connectionAccess)
Release the strategy. Called one time as the SessionFactory is being shut down.
-
executeUpdate
int executeUpdate(SqmUpdateStatement<?> sqmUpdateStatement, org.hibernate.query.sqm.internal.DomainParameterXref domainParameterXref, DomainQueryExecutionContext context)
Execute the multi-table update indicated by the passed SqmUpdateStatement- Returns:
- The number of rows affected
-
executeDelete
int executeDelete(SqmDeleteStatement<?> sqmDeleteStatement, org.hibernate.query.sqm.internal.DomainParameterXref domainParameterXref, DomainQueryExecutionContext context)
Execute the multi-table update indicated by the passed SqmUpdateStatement- Returns:
- The number of rows affected
-
-