diff --git a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderArrayParam.java b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderArrayParam.java index 00c9b714f765..66724a8ab7f2 100644 --- a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderArrayParam.java +++ b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderArrayParam.java @@ -18,6 +18,7 @@ import org.hibernate.metamodel.mapping.EntityMappingType; import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.query.spi.QueryOptions; +import org.hibernate.query.spi.QueryOptionsAdapter; import org.hibernate.sql.ast.tree.expression.JdbcParameter; import org.hibernate.sql.ast.tree.select.SelectStatement; import org.hibernate.sql.exec.internal.JdbcParameterBindingImpl; @@ -121,7 +122,12 @@ protected void loadEntitiesById( getJdbcSelectExecutor().executeQuery( getSqlAstTranslatorFactory().buildSelectTranslator( getSessionFactory(), sqlAst ) - .translate( NO_BINDINGS, QueryOptions.NONE ), + .translate( NO_BINDINGS, new QueryOptionsAdapter() { + @Override + public LockOptions getLockOptions() { + return lockOptions; + } + } ), jdbcParameterBindings, new ExecutionContextWithSubselectFetchHandler( session, diff --git a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderStandard.java b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderStandard.java index 37f2c152bd57..cd17b224483a 100644 --- a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderStandard.java +++ b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderStandard.java @@ -18,7 +18,7 @@ import org.hibernate.loader.ast.spi.MultiIdLoadOptions; import org.hibernate.loader.ast.spi.MultiKeyLoadSizingStrategy; import org.hibernate.persister.entity.EntityPersister; -import org.hibernate.query.spi.QueryOptions; +import org.hibernate.query.spi.QueryOptionsAdapter; import org.hibernate.sql.ast.tree.select.SelectStatement; import org.hibernate.sql.exec.internal.JdbcParameterBindingsImpl; import org.hibernate.sql.exec.spi.JdbcParameterBindings; @@ -163,7 +163,12 @@ private List performRegularMultiLoad( return getJdbcSelectExecutor().list( getSqlAstTranslatorFactory().buildSelectTranslator( getSessionFactory(), sqlAst ) - .translate( jdbcParameterBindings, QueryOptions.NONE ), + .translate( jdbcParameterBindings, new QueryOptionsAdapter() { + @Override + public LockOptions getLockOptions() { + return lockOptions; + } + } ), jdbcParameterBindings, new ExecutionContextWithSubselectFetchHandler( session, diff --git a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderArrayParam.java b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderArrayParam.java index 98d221ac9f4d..a4a0d92dc0ff 100644 --- a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderArrayParam.java +++ b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderArrayParam.java @@ -7,7 +7,6 @@ import java.util.Collections; import java.util.List; -import org.hibernate.LockMode; import org.hibernate.LockOptions; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; @@ -18,7 +17,7 @@ import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.metamodel.mapping.internal.BasicAttributeMapping; import org.hibernate.metamodel.mapping.internal.SimpleNaturalIdMapping; -import org.hibernate.query.spi.QueryOptions; +import org.hibernate.query.spi.QueryOptionsAdapter; import org.hibernate.sql.ast.tree.expression.JdbcParameter; import org.hibernate.sql.ast.tree.select.SelectStatement; import org.hibernate.sql.exec.internal.JdbcParameterImpl; @@ -73,9 +72,10 @@ public List multiLoad(K[] naturalIds, MultiNaturalIdLoadOptions loadOptio final SessionFactoryImplementor sessionFactory = session.getFactory(); naturalIds = LoaderHelper.normalizeKeys( naturalIds, getNaturalIdAttribute(), session, sessionFactory ); - final LockOptions lockOptions = (loadOptions.getLockOptions() == null) - ? new LockOptions( LockMode.NONE ) - : loadOptions.getLockOptions(); + final LockOptions lockOptions = + loadOptions.getLockOptions() == null + ? LockOptions.NONE + : loadOptions.getLockOptions(); final BasicTypeRegistry basicTypeRegistry = sessionFactory.getTypeConfiguration().getBasicTypeRegistry(); final BasicType arrayBasicType = basicTypeRegistry.getRegisteredType( keyArrayClass ); @@ -99,7 +99,12 @@ public List multiLoad(K[] naturalIds, MultiNaturalIdLoadOptions loadOptio .getJdbcEnvironment() .getSqlAstTranslatorFactory() .buildSelectTranslator( sessionFactory, sqlAst ) - .translate( JdbcParameterBindings.NO_BINDINGS, QueryOptions.NONE ); + .translate( JdbcParameterBindings.NO_BINDINGS, new QueryOptionsAdapter() { + @Override + public LockOptions getLockOptions() { + return lockOptions; + } + } ); return LoaderHelper.loadByArrayParameter( naturalIds, diff --git a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderInPredicate.java b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderInPredicate.java index fb93905400ec..a51459f2c6e4 100644 --- a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderInPredicate.java +++ b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderInPredicate.java @@ -7,7 +7,6 @@ import java.util.Collections; import java.util.List; -import org.hibernate.LockMode; import org.hibernate.LockOptions; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; @@ -48,24 +47,27 @@ public List multiLoad(K[] naturalIds, MultiNaturalIdLoadOptions options, maxBatchSize = options.getBatchSize(); } else { - maxBatchSize = session.getJdbcServices().getJdbcEnvironment().getDialect().getMultiKeyLoadSizingStrategy().determineOptimalBatchLoadSize( - entityDescriptor.getNaturalIdMapping().getJdbcTypeCount(), - naturalIds.length, - sessionFactory.getSessionFactoryOptions().inClauseParameterPaddingEnabled() - ); + maxBatchSize = + session.getJdbcServices().getJdbcEnvironment().getDialect() + .getMultiKeyLoadSizingStrategy().determineOptimalBatchLoadSize( + entityDescriptor.getNaturalIdMapping().getJdbcTypeCount(), + naturalIds.length, + sessionFactory.getSessionFactoryOptions().inClauseParameterPaddingEnabled() + ); } final int batchSize = Math.min( maxBatchSize, naturalIds.length ); - final LockOptions lockOptions = (options.getLockOptions() == null) - ? new LockOptions( LockMode.NONE ) - : options.getLockOptions(); + final LockOptions lockOptions = + options.getLockOptions() == null + ? LockOptions.NONE + : options.getLockOptions(); final MultiNaturalIdLoadingBatcher batcher = new MultiNaturalIdLoadingBatcher( entityDescriptor, entityDescriptor.getNaturalIdMapping(), batchSize, - (naturalId, session1) -> { + (naturalId, s) -> { // `naturalId` here is the one passed in by the API as part of the values array // todo (6.0) : use this to help create the ordered results return entityDescriptor.getNaturalIdMapping().normalizeInput( naturalId ); @@ -75,7 +77,7 @@ public List multiLoad(K[] naturalIds, MultiNaturalIdLoadOptions options, sessionFactory ); - final List results = batcher.multiLoad( naturalIds, options, session ); + final List results = batcher.multiLoad( naturalIds, session ); if ( results.size() == 1 ) { return results; diff --git a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoadingBatcher.java b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoadingBatcher.java index bdd075d132af..8a74761c8219 100644 --- a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoadingBatcher.java +++ b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoadingBatcher.java @@ -13,10 +13,9 @@ import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.engine.spi.SubselectFetch; import org.hibernate.internal.util.collections.CollectionHelper; -import org.hibernate.loader.ast.spi.MultiNaturalIdLoadOptions; import org.hibernate.metamodel.mapping.EntityMappingType; import org.hibernate.metamodel.mapping.ModelPart; -import org.hibernate.query.spi.QueryOptions; +import org.hibernate.query.spi.QueryOptionsAdapter; import org.hibernate.sql.ast.SqlAstTranslatorFactory; import org.hibernate.sql.ast.tree.select.SelectStatement; import org.hibernate.sql.exec.internal.JdbcParameterBindingsImpl; @@ -83,10 +82,15 @@ public MultiNaturalIdLoadingBatcher( final SqlAstTranslatorFactory sqlAstTranslatorFactory = sessionFactory.getJdbcServices().getJdbcEnvironment().getSqlAstTranslatorFactory(); this.jdbcSelect = sqlAstTranslatorFactory.buildSelectTranslator( sessionFactory, sqlSelect ) - .translate( null, QueryOptions.NONE ); + .translate( null, new QueryOptionsAdapter() { + @Override + public LockOptions getLockOptions() { + return lockOptions; + } + } ); } - public List multiLoad(Object[] naturalIdValues, MultiNaturalIdLoadOptions options, SharedSessionContractImplementor session) { + public List multiLoad(Object[] naturalIdValues, SharedSessionContractImplementor session) { final ArrayList multiLoadResults = CollectionHelper.arrayList( naturalIdValues.length ); final JdbcParameterBindingsImpl jdbcParamBindings = new JdbcParameterBindingsImpl( jdbcParameters.size() ); diff --git a/hibernate-core/src/main/java/org/hibernate/sql/ForUpdateFragment.java b/hibernate-core/src/main/java/org/hibernate/sql/ForUpdateFragment.java index ab048a4fd493..56f52442d728 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/ForUpdateFragment.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/ForUpdateFragment.java @@ -23,7 +23,7 @@ public class ForUpdateFragment { private final Dialect dialect; private final LockOptions lockOptions; - public ForUpdateFragment(Dialect dialect, LockOptions lockOptions, Map keyColumnNames) throws QueryException { + public ForUpdateFragment(Dialect dialect, LockOptions lockOptions, Map keyColumnNames) { this.dialect = dialect; LockMode upgradeType = null; this.lockOptions = lockOptions; @@ -62,7 +62,7 @@ public ForUpdateFragment(Dialect dialect, LockOptions lockOptions, Map 0 ) { + if ( !aliases.isEmpty() ) { aliases.append( ", " ); } aliases.append( alias ); @@ -70,7 +70,7 @@ public ForUpdateFragment addTableAlias(String alias) { } public String toFragmentString() { - if ( aliases.length() == 0) { + if ( aliases.isEmpty() ) { return dialect.getForUpdateString( lockOptions ); } else {