Skip to content

Commit 1f52d02

Browse files
committed
HHH-18992 - fix for issue (addition to fix provided in hibernate#9517)
Signed-off-by: Jan Schatteman <[email protected]>
1 parent 03ef43f commit 1f52d02

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,49 @@
44
*/
55
package org.hibernate.loader.ast.internal;
66

7+
import org.hibernate.LockOptions;
78
import org.hibernate.engine.spi.EntityHolder;
89
import org.hibernate.engine.spi.SharedSessionContractImplementor;
910
import org.hibernate.engine.spi.SubselectFetch;
1011
import org.hibernate.query.spi.QueryOptions;
12+
import org.hibernate.query.spi.QueryOptionsAdapter;
1113
import org.hibernate.sql.exec.internal.BaseExecutionContext;
1214

1315
class ExecutionContextWithSubselectFetchHandler extends BaseExecutionContext {
1416

1517
private final SubselectFetch.RegistrationHandler subSelectFetchableKeysHandler;
1618
private final boolean readOnly;
19+
private final QueryOptions queryOptions;
1720

1821
public ExecutionContextWithSubselectFetchHandler(
1922
SharedSessionContractImplementor session,
2023
SubselectFetch.RegistrationHandler subSelectFetchableKeysHandler) {
21-
this( session, subSelectFetchableKeysHandler, false );
24+
this( session, subSelectFetchableKeysHandler, false, null );
2225
}
2326

2427
public ExecutionContextWithSubselectFetchHandler(
2528
SharedSessionContractImplementor session,
2629
SubselectFetch.RegistrationHandler subSelectFetchableKeysHandler,
27-
boolean readOnly) {
30+
boolean readOnly,
31+
LockOptions lockOptions) {
2832
super( session );
2933
this.subSelectFetchableKeysHandler = subSelectFetchableKeysHandler;
3034
this.readOnly = readOnly;
35+
this.queryOptions = determineQueryOptions( readOnly, lockOptions );
36+
}
37+
38+
private QueryOptions determineQueryOptions(boolean readOnly, LockOptions lockOptions) {
39+
return new QueryOptionsAdapter() {
40+
@Override
41+
public Boolean isReadOnly() {
42+
return readOnly;
43+
}
44+
45+
@Override
46+
public LockOptions getLockOptions() {
47+
return lockOptions == null ? LockOptions.NONE : lockOptions;
48+
}
49+
};
3150
}
3251

3352
@Override
@@ -39,6 +58,6 @@ public void registerLoadingEntityHolder(EntityHolder holder) {
3958

4059
@Override
4160
public QueryOptions getQueryOptions() {
42-
return readOnly ? QueryOptions.READ_ONLY : super.getQueryOptions();
61+
return queryOptions;
4362
}
4463
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ public LockOptions getLockOptions() {
142142
JdbcParametersList.singleton( jdbcParameter ),
143143
jdbcParameterBindings
144144
),
145-
TRUE.equals( loadOptions.getReadOnly( session ) ) ),
145+
TRUE.equals( loadOptions.getReadOnly( session ) ),
146+
lockOptions),
146147
RowTransformerStandardImpl.instance(),
147148
null,
148149
idsInBatch.size(),

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ public LockOptions getLockOptions() {
173173
new ExecutionContextWithSubselectFetchHandler(
174174
session,
175175
fetchableKeysHandler( session, sqlAst, jdbcParameters, jdbcParameterBindings ),
176-
TRUE.equals( loadOptions.getReadOnly( session ) )
176+
TRUE.equals( loadOptions.getReadOnly( session )),
177+
lockOptions
177178
),
178179
RowTransformerStandardImpl.instance(),
179180
null,

0 commit comments

Comments
 (0)