Skip to content

Commit b72c29b

Browse files
committed
[#2404] Upgrade Hibernate ORM to 7.1.0.CR2
1 parent b366a01 commit b72c29b

File tree

42 files changed

+1543
-3466
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1543
-3466
lines changed

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

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@
8080
import static org.hibernate.pretty.MessageHelper.infoString;
8181
import static org.hibernate.reactive.logging.impl.LoggerFactory.make;
8282
import static org.hibernate.reactive.util.impl.CompletionStages.completedFuture;
83-
import static org.hibernate.reactive.util.impl.CompletionStages.failedFuture;
8483
import static org.hibernate.reactive.util.impl.CompletionStages.logSqlException;
8584
import static org.hibernate.reactive.util.impl.CompletionStages.nullFuture;
8685
import static org.hibernate.reactive.util.impl.CompletionStages.voidFuture;
@@ -303,25 +302,25 @@ default CompletionStage<Object> reactiveGetCurrentVersion(Object id, SharedSessi
303302

304303
return getReactiveConnection( session )
305304
.selectJdbc( delegate().getVersionSelectString(), params )
306-
.thenCompose( resultSet -> currentVersion( session, resultSet ) );
305+
.thenApply( resultSet -> currentVersion( session, resultSet ) );
307306
}
308307

309-
private CompletionStage<Object> currentVersion(SharedSessionContractImplementor session, ResultSet resultSet) {
308+
private Object currentVersion(SharedSessionContractImplementor session, ResultSet resultSet) {
310309
try {
311310
if ( !resultSet.next() ) {
312-
return nullFuture();
311+
return null;
313312
}
314313
if ( !isVersioned() ) {
315-
return completedFuture( this );
314+
return this;
316315
}
317-
return completedFuture( getVersionType()
318-
.getJdbcMapping()
319-
.getJdbcValueExtractor()
320-
.extract( resultSet, 1, session ) );
316+
return getVersionType()
317+
.getJdbcMapping()
318+
.getJdbcValueExtractor()
319+
.extract( resultSet, 1, session );
321320
}
322321
catch (SQLException sqle) {
323322
//can never happen
324-
return failedFuture( new JDBCException( "error reading version", sqle ) );
323+
throw new JDBCException( "error reading version", sqle );
325324
}
326325
}
327326

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/sql/spi/ReactiveNamedSqmQueryMemento.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.hibernate.query.sqm.spi.NamedSqmQueryMemento;
2121
import org.hibernate.query.sqm.tree.SqmStatement;
2222
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
23-
import org.hibernate.reactive.query.sqm.internal.ReactiveQuerySqmImpl;
23+
import org.hibernate.reactive.query.sqm.internal.ReactiveSqmQueryImpl;
2424
import org.hibernate.reactive.query.sqm.internal.ReactiveSqmSelectionQueryImpl;
2525

2626
/**
@@ -49,10 +49,10 @@ public SqmQueryImplementor<E> toQuery(SharedSessionContractImplementor session)
4949
public <T> SqmQueryImplementor<T> toQuery(SharedSessionContractImplementor session, Class<T> resultType) {
5050
// A bit of a hack, I'm sure that if we have a better look at this we can avoid the instanceof
5151
if ( delegate instanceof NamedHqlQueryMementoImpl ) {
52-
return new ReactiveQuerySqmImpl<>( (NamedHqlQueryMementoImpl) delegate, resultType, session );
52+
return new ReactiveSqmQueryImpl<>( (NamedHqlQueryMementoImpl) delegate, resultType, session );
5353
}
5454
if ( delegate instanceof NamedCriteriaQueryMementoImpl ) {
55-
return new ReactiveQuerySqmImpl<>( (NamedCriteriaQueryMementoImpl) delegate, resultType, session );
55+
return new ReactiveSqmQueryImpl<>( (NamedCriteriaQueryMementoImpl) delegate, resultType, session );
5656
}
5757
else {
5858
throw new UnsupportedOperationException( "NamedSqmQueryMemento not recognized: " + delegate.getClass() );

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

Lines changed: 84 additions & 190 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/* Hibernate, Relational Persistence for Idiomatic Java
2+
*
3+
* SPDX-License-Identifier: Apache-2.0
4+
* Copyright: Red Hat Inc. and Hibernate Authors
5+
*/
6+
package org.hibernate.reactive.query.sqm.internal;
7+
8+
import org.hibernate.action.internal.BulkOperationCleanupAction;
9+
import org.hibernate.query.spi.DomainQueryExecutionContext;
10+
import org.hibernate.query.sqm.internal.AbstractMultiTableMutationQueryPlan;
11+
import org.hibernate.query.sqm.internal.DomainParameterXref;
12+
import org.hibernate.query.sqm.tree.SqmDmlStatement;
13+
import org.hibernate.reactive.query.sql.spi.ReactiveNonSelectQueryPlan;
14+
import org.hibernate.reactive.query.sqm.mutation.internal.ReactiveHandler;
15+
16+
import java.util.concurrent.CompletionStage;
17+
18+
public abstract class ReactiveAbstractMultiTableMutationQueryPlan<S extends SqmDmlStatement<?>, F>
19+
extends AbstractMultiTableMutationQueryPlan<S, F> implements ReactiveNonSelectQueryPlan {
20+
21+
public ReactiveAbstractMultiTableMutationQueryPlan(
22+
S statement,
23+
DomainParameterXref domainParameterXref,
24+
F strategy) {
25+
super( statement, domainParameterXref, strategy );
26+
}
27+
28+
@Override
29+
public CompletionStage<Integer> executeReactiveUpdate(DomainQueryExecutionContext context) {
30+
BulkOperationCleanupAction.schedule( context.getSession(), getStatement() );
31+
final Interpretation interpretation = getInterpretation( context );
32+
return ((ReactiveHandler)interpretation.handler()).reactiveExecute( interpretation.jdbcParameterBindings(), context );
33+
}
34+
35+
}

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

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,32 @@
55
*/
66
package org.hibernate.reactive.query.sqm.internal;
77

8-
import java.util.concurrent.CompletionStage;
9-
10-
import org.hibernate.action.internal.BulkOperationCleanupAction;
118
import org.hibernate.query.spi.DomainQueryExecutionContext;
129
import org.hibernate.query.sqm.internal.DomainParameterXref;
10+
import org.hibernate.query.sqm.mutation.spi.MultiTableHandlerBuildResult;
11+
import org.hibernate.query.sqm.mutation.spi.SqmMultiTableMutationStrategy;
1312
import org.hibernate.query.sqm.tree.delete.SqmDeleteStatement;
14-
import org.hibernate.reactive.query.sql.spi.ReactiveNonSelectQueryPlan;
1513
import org.hibernate.reactive.query.sqm.mutation.spi.ReactiveSqmMultiTableMutationStrategy;
1614

1715
/**
1816
* @see org.hibernate.query.sqm.internal.MultiTableDeleteQueryPlan
1917
*/
20-
public class ReactiveMultiTableDeleteQueryPlan implements ReactiveNonSelectQueryPlan {
21-
private final SqmDeleteStatement<?> sqmDelete;
22-
private final DomainParameterXref domainParameterXref;
23-
private final ReactiveSqmMultiTableMutationStrategy deleteStrategy;
18+
public class ReactiveMultiTableDeleteQueryPlan
19+
extends ReactiveAbstractMultiTableMutationQueryPlan<SqmDeleteStatement<?>, SqmMultiTableMutationStrategy> {
2420

2521
public ReactiveMultiTableDeleteQueryPlan(
2622
SqmDeleteStatement<?> sqmDelete,
2723
DomainParameterXref domainParameterXref,
2824
ReactiveSqmMultiTableMutationStrategy deleteStrategy) {
29-
this.sqmDelete = sqmDelete;
30-
this.domainParameterXref = domainParameterXref;
31-
this.deleteStrategy = deleteStrategy;
25+
super( sqmDelete, domainParameterXref, deleteStrategy );
3226
}
3327

3428
@Override
35-
public CompletionStage<Integer> executeReactiveUpdate(DomainQueryExecutionContext executionContext) {
36-
BulkOperationCleanupAction.schedule( executionContext.getSession(), sqmDelete );
37-
return deleteStrategy.reactiveExecuteDelete( sqmDelete, domainParameterXref, executionContext );
29+
protected MultiTableHandlerBuildResult buildHandler(
30+
SqmDeleteStatement<?> statement,
31+
DomainParameterXref domainParameterXref,
32+
SqmMultiTableMutationStrategy strategy,
33+
DomainQueryExecutionContext context) {
34+
return strategy.buildHandler( statement, domainParameterXref, context );
3835
}
3936
}

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

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,32 @@
55
*/
66
package org.hibernate.reactive.query.sqm.internal;
77

8-
import java.util.concurrent.CompletionStage;
9-
10-
import org.hibernate.action.internal.BulkOperationCleanupAction;
118
import org.hibernate.query.spi.DomainQueryExecutionContext;
129
import org.hibernate.query.sqm.internal.DomainParameterXref;
10+
import org.hibernate.query.sqm.mutation.spi.MultiTableHandlerBuildResult;
11+
import org.hibernate.query.sqm.mutation.spi.SqmMultiTableInsertStrategy;
1312
import org.hibernate.query.sqm.tree.insert.SqmInsertStatement;
14-
import org.hibernate.reactive.query.sql.spi.ReactiveNonSelectQueryPlan;
1513
import org.hibernate.reactive.query.sqm.mutation.spi.ReactiveSqmMultiTableInsertStrategy;
1614

1715
/**
1816
* @see org.hibernate.query.sqm.internal.MultiTableInsertQueryPlan
1917
*/
20-
public class ReactiveMultiTableInsertQueryPlan implements ReactiveNonSelectQueryPlan {
21-
private final SqmInsertStatement<?> sqmInsert;
22-
private final DomainParameterXref domainParameterXref;
23-
private final ReactiveSqmMultiTableInsertStrategy mutationStrategy;
18+
public class ReactiveMultiTableInsertQueryPlan
19+
extends ReactiveAbstractMultiTableMutationQueryPlan<SqmInsertStatement<?>, SqmMultiTableInsertStrategy> {
2420

2521
public ReactiveMultiTableInsertQueryPlan(
2622
SqmInsertStatement<?> sqmInsert,
2723
DomainParameterXref domainParameterXref,
2824
ReactiveSqmMultiTableInsertStrategy mutationStrategy) {
29-
this.sqmInsert = sqmInsert;
30-
this.domainParameterXref = domainParameterXref;
31-
this.mutationStrategy = mutationStrategy;
25+
super( sqmInsert, domainParameterXref, mutationStrategy );
3226
}
3327

3428
@Override
35-
public CompletionStage<Integer> executeReactiveUpdate(DomainQueryExecutionContext executionContext) {
36-
BulkOperationCleanupAction.schedule( executionContext.getSession(), sqmInsert );
37-
return mutationStrategy.reactiveExecuteInsert( sqmInsert, domainParameterXref, executionContext );
29+
protected MultiTableHandlerBuildResult buildHandler(
30+
SqmInsertStatement<?> statement,
31+
DomainParameterXref domainParameterXref,
32+
SqmMultiTableInsertStrategy strategy,
33+
DomainQueryExecutionContext context) {
34+
return strategy.buildHandler( statement, domainParameterXref, context );
3835
}
3936
}

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

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,31 @@
55
*/
66
package org.hibernate.reactive.query.sqm.internal;
77

8-
import java.util.concurrent.CompletionStage;
9-
10-
import org.hibernate.action.internal.BulkOperationCleanupAction;
118
import org.hibernate.query.spi.DomainQueryExecutionContext;
129
import org.hibernate.query.sqm.internal.DomainParameterXref;
10+
import org.hibernate.query.sqm.mutation.spi.MultiTableHandlerBuildResult;
11+
import org.hibernate.query.sqm.mutation.spi.SqmMultiTableMutationStrategy;
1312
import org.hibernate.query.sqm.tree.update.SqmUpdateStatement;
14-
import org.hibernate.reactive.query.sql.spi.ReactiveNonSelectQueryPlan;
15-
import org.hibernate.reactive.query.sqm.mutation.spi.ReactiveSqmMultiTableMutationStrategy;
1613

1714
/**
1815
* @see org.hibernate.query.sqm.internal.MultiTableUpdateQueryPlan
1916
*/
20-
public class ReactiveMultiTableUpdateQueryPlan implements ReactiveNonSelectQueryPlan {
21-
private final SqmUpdateStatement<?> sqmUpdate;
22-
private final DomainParameterXref domainParameterXref;
23-
private final ReactiveSqmMultiTableMutationStrategy mutationStrategy;
17+
public class ReactiveMultiTableUpdateQueryPlan
18+
extends ReactiveAbstractMultiTableMutationQueryPlan<SqmUpdateStatement<?>, SqmMultiTableMutationStrategy> {
2419

2520
public ReactiveMultiTableUpdateQueryPlan(
2621
SqmUpdateStatement<?> sqmUpdate,
2722
DomainParameterXref domainParameterXref,
28-
ReactiveSqmMultiTableMutationStrategy mutationStrategy) {
29-
this.sqmUpdate = sqmUpdate;
30-
this.domainParameterXref = domainParameterXref;
31-
this.mutationStrategy = mutationStrategy;
23+
SqmMultiTableMutationStrategy mutationStrategy) {
24+
super( sqmUpdate, domainParameterXref, mutationStrategy );
3225
}
3326

3427
@Override
35-
public CompletionStage<Integer> executeReactiveUpdate(DomainQueryExecutionContext executionContext) {
36-
BulkOperationCleanupAction.schedule( executionContext.getSession(), sqmUpdate );
37-
return mutationStrategy.reactiveExecuteUpdate( sqmUpdate, domainParameterXref, executionContext );
28+
protected MultiTableHandlerBuildResult buildHandler(
29+
SqmUpdateStatement<?> statement,
30+
DomainParameterXref domainParameterXref,
31+
SqmMultiTableMutationStrategy strategy,
32+
DomainQueryExecutionContext context) {
33+
return strategy.buildHandler( statement, domainParameterXref, context );
3834
}
3935
}

0 commit comments

Comments
 (0)