Skip to content

Commit 571091f

Browse files
committed
HHH-18992 pass LockOptions correctly to multiple id loaders
1 parent 6b7e8b7 commit 571091f

File tree

5 files changed

+19
-6
lines changed

5 files changed

+19
-6
lines changed

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderArrayParam.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.hibernate.metamodel.mapping.EntityMappingType;
1919
import org.hibernate.metamodel.mapping.JdbcMapping;
2020
import org.hibernate.query.spi.QueryOptions;
21+
import org.hibernate.query.spi.QueryOptionsAdapter;
2122
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
2223
import org.hibernate.sql.ast.tree.select.SelectStatement;
2324
import org.hibernate.sql.exec.internal.JdbcParameterBindingImpl;
@@ -121,7 +122,12 @@ protected void loadEntitiesById(
121122

122123
getJdbcSelectExecutor().executeQuery(
123124
getSqlAstTranslatorFactory().buildSelectTranslator( getSessionFactory(), sqlAst )
124-
.translate( NO_BINDINGS, QueryOptions.NONE ),
125+
.translate( NO_BINDINGS, new QueryOptionsAdapter() {
126+
@Override
127+
public LockOptions getLockOptions() {
128+
return lockOptions;
129+
}
130+
} ),
125131
jdbcParameterBindings,
126132
new ExecutionContextWithSubselectFetchHandler(
127133
session,

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiIdEntityLoaderStandard.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import org.hibernate.loader.ast.spi.MultiIdLoadOptions;
1919
import org.hibernate.loader.ast.spi.MultiKeyLoadSizingStrategy;
2020
import org.hibernate.persister.entity.EntityPersister;
21-
import org.hibernate.query.spi.QueryOptions;
21+
import org.hibernate.query.spi.QueryOptionsAdapter;
2222
import org.hibernate.sql.ast.tree.select.SelectStatement;
2323
import org.hibernate.sql.exec.internal.JdbcParameterBindingsImpl;
2424
import org.hibernate.sql.exec.spi.JdbcParameterBindings;
@@ -163,7 +163,12 @@ private List<T> performRegularMultiLoad(
163163

164164
return getJdbcSelectExecutor().list(
165165
getSqlAstTranslatorFactory().buildSelectTranslator( getSessionFactory(), sqlAst )
166-
.translate( jdbcParameterBindings, QueryOptions.NONE ),
166+
.translate( jdbcParameterBindings, new QueryOptionsAdapter() {
167+
@Override
168+
public LockOptions getLockOptions() {
169+
return lockOptions;
170+
}
171+
} ),
167172
jdbcParameterBindings,
168173
new ExecutionContextWithSubselectFetchHandler(
169174
session,

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoaderArrayParam.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public <K> List<E> multiLoad(K[] naturalIds, MultiNaturalIdLoadOptions loadOptio
9999
.getJdbcEnvironment()
100100
.getSqlAstTranslatorFactory()
101101
.buildSelectTranslator( sessionFactory, sqlAst )
102+
// TODO: do we need to pass the LockOptions here?
102103
.translate( JdbcParameterBindings.NO_BINDINGS, QueryOptions.NONE );
103104

104105
return LoaderHelper.loadByArrayParameter(

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/MultiNaturalIdLoadingBatcher.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public MultiNaturalIdLoadingBatcher(
8383
final SqlAstTranslatorFactory sqlAstTranslatorFactory =
8484
sessionFactory.getJdbcServices().getJdbcEnvironment().getSqlAstTranslatorFactory();
8585
this.jdbcSelect = sqlAstTranslatorFactory.buildSelectTranslator( sessionFactory, sqlSelect )
86+
//TODO: do we need to pass the LockOptions here?
8687
.translate( null, QueryOptions.NONE );
8788
}
8889

hibernate-core/src/main/java/org/hibernate/sql/ForUpdateFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class ForUpdateFragment {
2323
private final Dialect dialect;
2424
private final LockOptions lockOptions;
2525

26-
public ForUpdateFragment(Dialect dialect, LockOptions lockOptions, Map<String, String[]> keyColumnNames) throws QueryException {
26+
public ForUpdateFragment(Dialect dialect, LockOptions lockOptions, Map<String, String[]> keyColumnNames) {
2727
this.dialect = dialect;
2828
LockMode upgradeType = null;
2929
this.lockOptions = lockOptions;
@@ -62,15 +62,15 @@ public ForUpdateFragment(Dialect dialect, LockOptions lockOptions, Map<String, S
6262
}
6363

6464
public ForUpdateFragment addTableAlias(String alias) {
65-
if ( aliases.length() > 0 ) {
65+
if ( !aliases.isEmpty() ) {
6666
aliases.append( ", " );
6767
}
6868
aliases.append( alias );
6969
return this;
7070
}
7171

7272
public String toFragmentString() {
73-
if ( aliases.length() == 0) {
73+
if ( aliases.isEmpty() ) {
7474
return dialect.getForUpdateString( lockOptions );
7575
}
7676
else {

0 commit comments

Comments
 (0)