Skip to content

Commit bfaf3c5

Browse files
committed
HHH-18610 DynamicFetchBuilderLegacy LockMode
1 parent b565d2b commit bfaf3c5

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

hibernate-core/src/main/java/org/hibernate/query/results/internal/dynamic/DynamicFetchBuilderLegacy.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public class DynamicFetchBuilderLegacy
6161
private final Map<Fetchable, FetchBuilder> fetchBuilderMap;
6262
private final DynamicResultBuilderEntityStandard resultBuilderEntity;
6363

64+
private LockMode lockMode;
65+
6466
public DynamicFetchBuilderLegacy(
6567
String tableAlias,
6668
String ownerTableAlias,
@@ -107,6 +109,7 @@ public String getFetchableName() {
107109

108110
@Override
109111
public NativeQuery.FetchReturn setLockMode(LockMode lockMode) {
112+
this.lockMode = lockMode;
110113
return this;
111114
}
112115

@@ -176,6 +179,9 @@ public Fetch buildFetch(
176179
final DomainResultCreationStateImpl creationState = impl( domainResultCreationState );
177180
final TableGroup ownerTableGroup = creationState.getFromClauseAccess().findByAlias( ownerTableAlias );
178181
final TableGroup tableGroup;
182+
if ( lockMode != null ) {
183+
domainResultCreationState.getSqlAstCreationState().registerLockMode( tableAlias, lockMode );
184+
}
179185
if ( fetchable instanceof TableGroupJoinProducer ) {
180186
final SqlAliasBase sqlAliasBase = new SqlAliasBaseConstant( tableAlias );
181187
final TableGroupJoin tableGroupJoin = ( (TableGroupJoinProducer) fetchable ).createTableGroupJoin(
@@ -359,6 +365,7 @@ public boolean equals(Object o) {
359365
return tableAlias.equals( that.tableAlias )
360366
&& ownerTableAlias.equals( that.ownerTableAlias )
361367
&& fetchable.equals( that.fetchable )
368+
&& lockMode.equals( that.lockMode )
362369
&& Objects.equals( columnNames, that.columnNames )
363370
&& Objects.equals( fetchBuilderMap, that.fetchBuilderMap )
364371
&& Objects.equals( resultBuilderEntity, that.resultBuilderEntity );
@@ -369,6 +376,7 @@ public int hashCode() {
369376
int result = tableAlias.hashCode();
370377
result = 31 * result + ownerTableAlias.hashCode();
371378
result = 31 * result + fetchable.hashCode();
379+
result = 31 * result + lockMode.hashCode();
372380
result = 31 * result + ( columnNames != null ? columnNames.hashCode() : 0 );
373381
result = 31 * result + ( fetchBuilderMap != null ? fetchBuilderMap.hashCode() : 0 );
374382
result = 31 * result + ( resultBuilderEntity != null ? resultBuilderEntity.hashCode() : 0 );

0 commit comments

Comments
 (0)