Skip to content

Commit f227466

Browse files
committed
Fix
1 parent 5645755 commit f227466

File tree

34 files changed

+357
-355
lines changed

34 files changed

+357
-355
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/id/insert/ReactiveInsertReturningDelegate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public TableMutationBuilder<?> createTableMutationBuilder(
9191
return new TableInsertReturningBuilder( persister, tableReference, generatedColumns, sessionFactory );
9292
}
9393
else {
94-
return new TableUpdateReturningBuilder<>( persister, tableReference, generatedColumns, sessionFactory );
94+
return new TableUpdateReturningBuilder( persister, tableReference, generatedColumns, sessionFactory );
9595
}
9696
}
9797

hibernate-reactive-core/src/main/java/org/hibernate/reactive/persister/entity/impl/ReactiveAbstractEntityPersister.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -474,13 +474,9 @@ default CompletionStage<Object> reactiveInitializeEnhancedEntityUsedAsProxy(
474474
Object entity,
475475
String nameOfAttributeBeingAccessed,
476476
SharedSessionContractImplementor session) {
477-
478477
final BytecodeEnhancementMetadata enhancementMetadata = getEntityPersister().getBytecodeEnhancementMetadata();
479478
final BytecodeLazyAttributeInterceptor currentInterceptor = enhancementMetadata.extractLazyInterceptor( entity );
480-
if ( currentInterceptor instanceof EnhancementAsProxyLazinessInterceptor ) {
481-
final EnhancementAsProxyLazinessInterceptor proxyInterceptor =
482-
(EnhancementAsProxyLazinessInterceptor) currentInterceptor;
483-
479+
if ( currentInterceptor instanceof EnhancementAsProxyLazinessInterceptor proxyInterceptor ) {
484480
final EntityKey entityKey = proxyInterceptor.getEntityKey();
485481
final Object identifier = entityKey.getIdentifier();
486482

@@ -494,19 +490,17 @@ default CompletionStage<Object> reactiveInitializeEnhancedEntityUsedAsProxy(
494490
.handleEntityNotFound( entityKey.getEntityName(), identifier );
495491
}
496492

493+
final LazyAttributeLoadingInterceptor interceptor = enhancementMetadata
494+
.injectInterceptor( entity, identifier, session );
495+
497496
if ( nameOfAttributeBeingAccessed == null ) {
498497
return null;
499498
}
500499
else {
501-
final LazyAttributeLoadingInterceptor interceptor = enhancementMetadata
502-
.injectInterceptor( entity, identifier, session );
503500
return interceptor.readObject(
504-
entity,
505-
nameOfAttributeBeingAccessed,
506-
interceptor.isAttributeLoaded( nameOfAttributeBeingAccessed )
507-
? getPropertyValue( entity, nameOfAttributeBeingAccessed )
508-
: ( (LazyPropertyInitializer) this )
509-
.initializeLazyProperty( nameOfAttributeBeingAccessed, entity, session )
501+
entity, nameOfAttributeBeingAccessed, interceptor.isAttributeLoaded( nameOfAttributeBeingAccessed )
502+
? getPropertyValue( entity, nameOfAttributeBeingAccessed )
503+
: ( (LazyPropertyInitializer) this ).initializeLazyProperty( nameOfAttributeBeingAccessed, entity, session )
510504
);
511505
}
512506
} );
@@ -528,11 +522,12 @@ private CompletionStage<?> loadFromDatabaseOrCache(
528522
return completedFuture( loaded );
529523
}
530524
}
531-
return ( (ReactiveSingleIdEntityLoader<?>) determineLoaderToUse( session ) )
532-
.load( identifier, entity, LockOptions.NONE, session );
525+
final LockOptions lockOptions = new LockOptions();
526+
return ( (ReactiveSingleIdEntityLoader<?>) determineLoaderToUse( session, lockOptions ) )
527+
.load( identifier, entity, lockOptions, session );
533528
}
534529

535-
SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImplementor session);
530+
SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImplementor session, LockOptions lockOptions);
536531

537532
boolean initializeLazyProperty(String fieldName, Object entity, EntityEntry entry, int lazyIndex, Object selectedValue);
538533

hibernate-reactive-core/src/main/java/org/hibernate/reactive/persister/entity/impl/ReactiveJoinedSubclassEntityPersister.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ protected AttributeMapping buildPluralAttributeMapping(
139139
}
140140

141141
@Override
142-
public SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImplementor session) {
143-
return super.determineLoaderToUse( session );
142+
public SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImplementor session, LockOptions lockOptions) {
143+
return super.determineLoaderToUse( session, lockOptions );
144144
}
145145

146146
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/persister/entity/impl/ReactiveSingleTableEntityPersister.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ public GeneratedValuesMutationDelegate createInsertDelegate() {
8686
}
8787

8888
@Override
89-
public SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImplementor session) {
90-
return super.determineLoaderToUse( session );
89+
public SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImplementor session, LockOptions lockOptions) {
90+
return super.determineLoaderToUse( session, lockOptions );
9191
}
9292

9393
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/persister/entity/impl/ReactiveUnionSubclassEntityPersister.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ protected AttributeMapping buildPluralAttributeMapping(
139139
}
140140

141141
@Override
142-
public SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImplementor session) {
143-
return super.determineLoaderToUse( session );
142+
public SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImplementor session, LockOptions lockOptions) {
143+
return super.determineLoaderToUse( session, lockOptions );
144144
}
145145

146146
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/provider/impl/ReactiveServiceInitiators.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.engine.jdbc.internal.SqlStatementLoggerInitiator;
2323
import org.hibernate.engine.jndi.internal.JndiServiceInitiator;
2424
import org.hibernate.event.internal.EntityCopyObserverFactoryInitiator;
25+
import org.hibernate.internal.util.cache.InternalCacheFactoryInitiator;
2526
import org.hibernate.persister.internal.PersisterFactoryInitiator;
2627
import org.hibernate.property.access.internal.PropertyAccessStrategyResolverInitiator;
2728
import org.hibernate.reactive.context.impl.VertxContextInitiator;
@@ -161,6 +162,9 @@ private static List<StandardServiceInitiator<?>> buildInitialServiceInitiatorLis
161162
// Custom for Hibernate Reactive: BatchLoaderFactory
162163
serviceInitiators.add( ReactiveBatchLoaderFactoryInitiator.INSTANCE );
163164

165+
// [standard] InternalCacheFactoryService
166+
serviceInitiators.add( InternalCacheFactoryInitiator.INSTANCE );
167+
164168
// --- end of services defined by Hibernate ORM
165169

166170
// --- custom ones follow:

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/sqm/ReactiveSqmSelectionQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
/**
2525
* @see org.hibernate.query.sqm.SqmSelectionQuery
2626
*/
27-
public interface ReactiveSqmSelectionQuery<R> extends ReactiveSelectionQuery<R>, SqmQuery {
27+
public interface ReactiveSqmSelectionQuery<R> extends ReactiveSelectionQuery<R>, SqmQuery<R> {
2828

2929
@Override
3030
ReactiveSqmSelectionQuery<R> setParameter(String name, Object value);

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/sqm/internal/ReactiveQuerySqmImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
import org.hibernate.query.spi.HqlInterpretation;
4545
import org.hibernate.query.spi.QueryInterpretationCache;
4646
import org.hibernate.query.spi.QueryOptions;
47-
import org.hibernate.query.sqm.internal.QuerySqmImpl;
4847
import org.hibernate.query.sqm.internal.SqmInterpretationsKey;
48+
import org.hibernate.query.sqm.internal.SqmQueryImpl;
4949
import org.hibernate.query.sqm.tree.SqmStatement;
5050
import org.hibernate.query.sqm.tree.delete.SqmDeleteStatement;
5151
import org.hibernate.query.sqm.tree.insert.SqmInsertStatement;
@@ -71,9 +71,9 @@
7171
import jakarta.persistence.metamodel.Type;
7272

7373
/**
74-
* A reactive {@link QuerySqmImpl}
74+
* A reactive {@link SqmQueryImpl}
7575
*/
76-
public class ReactiveQuerySqmImpl<R> extends QuerySqmImpl<R> implements ReactiveSqmQueryImplementor<R> {
76+
public class ReactiveQuerySqmImpl<R> extends SqmQueryImpl<R> implements ReactiveSqmQueryImplementor<R> {
7777

7878
private static final Log LOG = LoggerFactory.make( Log.class, MethodHandles.lookup() );
7979

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/sqm/mutation/internal/cte/ReactiveCteInsertHandler.java

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -144,27 +144,10 @@ public CompletionStage<Integer> reactiveExecute(DomainQueryExecutionContext exec
144144
final BaseSqmToSqlAstConverter.AdditionalInsertValues additionalInsertValues = sqmConverter.visitInsertionTargetPaths(
145145
(assignable, columnReferences) -> {
146146
final SqmPathInterpretation<?> pathInterpretation = (SqmPathInterpretation<?>) assignable;
147-
final int offset = CteTable.determineModelPartStartIndex(
148-
entityDescriptor,
149-
pathInterpretation.getExpressionType()
150-
);
151-
if ( offset == -1 ) {
152-
throw new IllegalStateException( "Couldn't find matching cte column for: " + ( (Expression) assignable ).getExpressionType() );
153-
}
154-
final int end = offset + pathInterpretation.getExpressionType().getJdbcTypeCount();
155-
// Find a matching cte table column and set that at the current index
156-
final List<CteColumn> columns = getCteTable().getCteColumns().subList( offset, end );
147+
final List<CteColumn> columns = getCteTable().findCteColumns( pathInterpretation.getExpressionType() );
157148
insertStatement.addTargetColumnReferences( columnReferences );
158149
targetPathCteColumns.addAll( columns );
159-
targetPathColumns.add(
160-
new AbstractMap.SimpleEntry<>(
161-
columns,
162-
new Assignment(
163-
assignable,
164-
(Expression) assignable
165-
)
166-
)
167-
);
150+
targetPathColumns.add( new AbstractMap.SimpleEntry<>( columns, new Assignment( assignable, (Expression) assignable ) ) );
168151
},
169152
sqmInsertStatement,
170153
entityDescriptor,
@@ -205,15 +188,8 @@ public CompletionStage<Integer> reactiveExecute(DomainQueryExecutionContext exec
205188
);
206189
}
207190
if ( !assignsId && entityDescriptor.getGenerator().generatedOnExecution() ) {
208-
querySpec.getSelectClause().addSqlSelection(
209-
new SqlSelectionImpl(
210-
0,
211-
SqmInsertStrategyHelper.createRowNumberingExpression(
212-
querySpec,
213-
sessionFactory
214-
)
215-
)
216-
);
191+
querySpec.getSelectClause()
192+
.addSqlSelection( new SqlSelectionImpl( 0, SqmInsertStrategyHelper.createRowNumberingExpression( querySpec, sessionFactory ) ) );
217193
}
218194
}
219195
);
@@ -250,6 +226,17 @@ public CompletionStage<Integer> reactiveExecute(DomainQueryExecutionContext exec
250226
);
251227
}
252228
}
229+
if ( !assignsId && entityDescriptor.getGenerator().generatedOnExecution() ) {
230+
querySpec.getSelectClause().addSqlSelection(
231+
new SqlSelectionImpl(
232+
0,
233+
SqmInsertStrategyHelper.createRowNumberingExpression(
234+
querySpec,
235+
sessionFactory
236+
)
237+
)
238+
);
239+
}
253240
final ValuesTableGroup valuesTableGroup = new ValuesTableGroup(
254241
navigablePath,
255242
entityDescriptor.getEntityPersister(),

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/sqm/mutation/internal/cte/ReactiveInsertExecutionDelegate.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
import java.util.function.Function;
1212

1313
import org.hibernate.dialect.temptable.TemporaryTable;
14+
import org.hibernate.dialect.temptable.TemporaryTableStrategy;
1415
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1516
import org.hibernate.query.spi.DomainQueryExecutionContext;
1617
import org.hibernate.query.sqm.internal.DomainParameterXref;
1718
import org.hibernate.query.sqm.mutation.internal.MultiTableSqmMutationConverter;
1819
import org.hibernate.query.sqm.mutation.internal.temptable.InsertExecutionDelegate;
19-
import org.hibernate.query.sqm.mutation.spi.AfterUseAction;
2020
import org.hibernate.reactive.query.sqm.mutation.internal.temptable.ReactiveTableBasedInsertHandler;
2121
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
2222
import org.hibernate.sql.ast.tree.from.TableGroup;
@@ -34,25 +34,29 @@ public class ReactiveInsertExecutionDelegate extends InsertExecutionDelegate imp
3434
public ReactiveInsertExecutionDelegate(
3535
MultiTableSqmMutationConverter sqmConverter,
3636
TemporaryTable entityTable,
37-
AfterUseAction afterUseAction,
37+
TemporaryTableStrategy temporaryTableStrategy,
38+
boolean forceDropAfterUse,
3839
Function<SharedSessionContractImplementor, String> sessionUidAccess,
3940
DomainParameterXref domainParameterXref,
4041
TableGroup insertingTableGroup,
4142
Map<String, TableReference> tableReferenceByAlias,
4243
List<Assignment> assignments,
44+
boolean assignedId,
4345
InsertSelectStatement insertStatement,
4446
ConflictClause conflictClause,
4547
JdbcParameter sessionUidParameter,
4648
DomainQueryExecutionContext executionContext) {
4749
super(
4850
sqmConverter,
4951
entityTable,
50-
afterUseAction,
52+
temporaryTableStrategy,
53+
forceDropAfterUse,
5154
sessionUidAccess,
5255
domainParameterXref,
5356
insertingTableGroup,
5457
tableReferenceByAlias,
5558
assignments,
59+
assignedId,
5660
insertStatement,
5761
conflictClause,
5862
sessionUidParameter,

0 commit comments

Comments
 (0)