Interface SqmMultiTableMutationStrategy
- All Known Implementing Classes:
CteMutationStrategy
,GlobalTemporaryTableMutationStrategy
,InlineMutationStrategy
,LocalTemporaryTableMutationStrategy
,PersistentTableMutationStrategy
public interface SqmMultiTableMutationStrategy
Pluggable 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 are executeUpdate(org.hibernate.query.sqm.tree.update.SqmUpdateStatement<?>, org.hibernate.query.sqm.internal.DomainParameterXref, org.hibernate.query.spi.DomainQueryExecutionContext)
and executeDelete(org.hibernate.query.sqm.tree.delete.SqmDeleteStatement<?>, org.hibernate.query.sqm.internal.DomainParameterXref, org.hibernate.query.spi.DomainQueryExecutionContext)
.
The methods prepare(org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess, org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess)
and release(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
SqmMultiTableMutationStrategyProvider.createMutationStrategy(org.hibernate.metamodel.mapping.EntityMappingType, org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess)
for standard resolution of the strategy to use for each hierarchy.
-
Method Summary
Modifier and TypeMethodDescriptionbuildHandler
(SqmDeleteOrUpdateStatement<?> sqmStatement, DomainParameterXref domainParameterXref, DomainQueryExecutionContext context) Builds a cacheable handler for the passed SqmDeleteOrUpdateStatement.default int
executeDelete
(SqmDeleteStatement<?> sqmDeleteStatement, DomainParameterXref domainParameterXref, DomainQueryExecutionContext context) Deprecated, for removal: This API element is subject to removal in a future version.default int
executeUpdate
(SqmUpdateStatement<?> sqmUpdateStatement, DomainParameterXref domainParameterXref, DomainQueryExecutionContext context) Deprecated, for removal: This API element is subject to removal in a future version.default void
prepare
(MappingModelCreationProcess mappingModelCreationProcess) Prepare the strategy for use.default void
prepare
(MappingModelCreationProcess mappingModelCreationProcess, JdbcConnectionAccess connectionAccess) Prepare the strategy for use.default void
release
(SessionFactoryImplementor sessionFactory, JdbcConnectionAccess connectionAccess) Release the strategy.
-
Method Details
-
prepare
default void prepare(MappingModelCreationProcess mappingModelCreationProcess, JdbcConnectionAccess connectionAccess) Prepare the strategy for use. Called one time as the SessionFactory is being built. -
prepare
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. -
buildHandler
MultiTableHandlerBuildResult buildHandler(SqmDeleteOrUpdateStatement<?> sqmStatement, DomainParameterXref domainParameterXref, DomainQueryExecutionContext context) Builds a cacheable handler for the passed SqmDeleteOrUpdateStatement.- Returns:
- The number of rows affected
-
executeUpdate
@Deprecated(forRemoval=true, since="7.1") default int executeUpdate(SqmUpdateStatement<?> sqmUpdateStatement, DomainParameterXref domainParameterXref, DomainQueryExecutionContext context) Deprecated, for removal: This API element is subject to removal in a future version.Execute the multi-table update indicated by the passed SqmUpdateStatement- Returns:
- The number of rows affected
-
executeDelete
@Deprecated(forRemoval=true, since="7.1") default int executeDelete(SqmDeleteStatement<?> sqmDeleteStatement, DomainParameterXref domainParameterXref, DomainQueryExecutionContext context) Deprecated, for removal: This API element is subject to removal in a future version.Execute the multi-table update indicated by the passed SqmUpdateStatement- Returns:
- The number of rows affected
-
buildHandler(SqmDeleteOrUpdateStatement, DomainParameterXref, DomainQueryExecutionContext)
instead