Skip to content

Commit c4fdc9a

Browse files
committed
[#2155] Upgrade Hibernate ORM to 7.0.0.Beta5
Some of the changes: * NullabilityCheck has changed * Remove ReactiveQueryImplementor#setOptional* * Replace inline calls to BatchFetchQueueHelper (removed)
1 parent 08e06d1 commit c4fdc9a

14 files changed

+218
-100
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ org.gradle.java.installations.auto-download=false
3535
#enableMavenLocalRepo = true
3636

3737
# The default Hibernate ORM version (override using `-PhibernateOrmVersion=the.version.you.want`)
38-
hibernateOrmVersion = 7.0.0.Beta4
38+
hibernateOrmVersion = 7.0.0.Beta5
3939

4040
# Override default Hibernate ORM Gradle plugin version
4141
# Using the stable version because I don't know how to configure the build to download the snapshot version from

hibernate-reactive-core/src/main/java/org/hibernate/reactive/event/impl/DefaultReactiveDeleteEventListener.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -436,11 +436,8 @@ protected CompletionStage<Void> deleteEntity(
436436
persister
437437
).nullifyTransientReferences( entityEntry.getDeletedState() )
438438
.thenAccept( vv -> {
439-
new Nullability( session ).checkNullability(
440-
entityEntry.getDeletedState(),
441-
persister,
442-
Nullability.NullabilityCheckType.DELETE
443-
);
439+
new Nullability( session, Nullability.NullabilityCheckType.DELETE )
440+
.checkNullability( entityEntry.getDeletedState(), persister );
444441
persistenceContext.registerNullifiableEntityKey( key );
445442

446443
final ReactiveActionQueue actionQueue = actionQueue( session );

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import java.util.concurrent.CompletionStage;
1111

1212
import org.hibernate.LockOptions;
13-
import org.hibernate.engine.internal.BatchFetchQueueHelper;
1413
import org.hibernate.engine.spi.EntityKey;
1514
import org.hibernate.engine.spi.LoadQueryInfluencers;
1615
import org.hibernate.engine.spi.SessionFactoryImplementor;
@@ -160,7 +159,8 @@ private CompletionStage<Void> initializeEntities(
160159
continue;
161160
}
162161
// found or not, remove the key from the batch-fetch queue
163-
BatchFetchQueueHelper.removeBatchLoadableEntityKey( id, getLoadable(), session );
162+
session.getPersistenceContextInternal().getBatchFetchQueue()
163+
.removeBatchLoadableEntityKey( session.generateEntityKey( id, getLoadable().getEntityPersister() ) );
164164
}
165165
} );
166166
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
import org.hibernate.LockMode;
1515
import org.hibernate.LockOptions;
16-
import org.hibernate.engine.internal.BatchFetchQueueHelper;
1716
import org.hibernate.engine.spi.BatchFetchQueue;
1817
import org.hibernate.engine.spi.EntityEntry;
1918
import org.hibernate.engine.spi.EntityKey;
@@ -206,7 +205,7 @@ protected <K> CompletionStage<List<E>> performOrderedMultiLoad(
206205
// the element value at this position in the result List should be
207206
// the EntityKey for that entity - reuse it
208207
final EntityKey entityKey = (EntityKey) result.get( resultIndex );
209-
BatchFetchQueueHelper.removeBatchLoadableEntityKey( entityKey, session );
208+
session.getPersistenceContextInternal().getBatchFetchQueue().removeBatchLoadableEntityKey( entityKey );
210209
Object entity = persistenceContext.getEntity( entityKey );
211210
if ( entity != null && !loadOptions.isReturnOfDeletedEntitiesEnabled() ) {
212211
// make sure it is not DELETED
@@ -293,7 +292,8 @@ protected <K> CompletionStage<List<E>> performUnorderedMultiLoad(
293292
continue;
294293
}
295294
// found or not, remove the key from the batch-fetch queue
296-
BatchFetchQueueHelper.removeBatchLoadableEntityKey( id, getLoadable(), session );
295+
session.getPersistenceContextInternal().getBatchFetchQueue()
296+
.removeBatchLoadableEntityKey( session.generateEntityKey( id, getLoadable().getEntityPersister() ) );
297297
}
298298

299299
return result;

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/impl/MutinySessionImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ public <R> MutationQuery createQuery(CriteriaDelete<R> criteriaDelete) {
173173

174174
@Override
175175
public <R> Query<R> createNamedQuery(String queryName) {
176-
return new MutinyQueryImpl<>( delegate.createReactiveNamedQuery( queryName, null ), factory );
176+
return new MutinyQueryImpl<>( delegate.createReactiveNamedQuery( queryName ), factory );
177177
}
178178

179179
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/impl/MutinyStatelessSessionImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public Mutiny.MutationQuery createMutationQuery(String queryString) {
9393

9494
@Override
9595
public <R> Query<R> createNamedQuery(String queryName) {
96-
return new MutinyQueryImpl<>( delegate.createReactiveNamedQuery( queryName, null ), factory );
96+
return new MutinyQueryImpl<>( delegate.createReactiveNamedQuery( queryName ), factory );
9797
}
9898

9999
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/ReactiveQueryImplementor.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
*/
66
package org.hibernate.reactive.query;
77

8-
import java.io.Serializable;
98
import java.time.Instant;
109
import java.util.Calendar;
1110
import java.util.Collection;
@@ -23,12 +22,6 @@
2322

2423
public interface ReactiveQueryImplementor<R> extends ReactiveQuery<R> {
2524

26-
void setOptionalId(Serializable id);
27-
28-
void setOptionalEntityName(String entityName);
29-
30-
void setOptionalObject(Object optionalObject);
31-
3225
QueryParameterBindings getParameterBindings();
3326

3427
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/query/sql/internal/ReactiveNativeQueryImpl.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.hibernate.graph.GraphSemantic;
2727
import org.hibernate.graph.RootGraph;
2828
import org.hibernate.graph.spi.RootGraphImplementor;
29-
import org.hibernate.internal.AbstractSharedSessionContract;
3029
import org.hibernate.metamodel.model.domain.BasicDomainType;
3130
import org.hibernate.query.BindableType;
3231
import org.hibernate.query.Order;
@@ -65,8 +64,18 @@ public class ReactiveNativeQueryImpl<R> extends NativeQueryImpl<R>
6564

6665
private final ReactiveAbstractSelectionQuery<R> selectionQueryDelegate;
6766

68-
public ReactiveNativeQueryImpl(String memento, SharedSessionContractImplementor session) {
69-
super( memento, session );
67+
public ReactiveNativeQueryImpl(String sql, SharedSessionContractImplementor session) {
68+
super( sql, null, session );
69+
this.selectionQueryDelegate = createSelectionQueryDelegate( session );
70+
}
71+
72+
public ReactiveNativeQueryImpl(String sql, Class<R> resultClass, SharedSessionContractImplementor session) {
73+
super( sql, resultClass, session );
74+
this.selectionQueryDelegate = createSelectionQueryDelegate( session );
75+
}
76+
77+
public ReactiveNativeQueryImpl(String sql, NamedResultSetMappingMemento resultSetMappingMemento, Class<R> resultClass, SharedSessionContractImplementor session) {
78+
super( sql, resultSetMappingMemento, resultClass, session);
7079
this.selectionQueryDelegate = createSelectionQueryDelegate( session );
7180
}
7281

@@ -91,14 +100,6 @@ public ReactiveNativeQueryImpl(
91100
this.selectionQueryDelegate = createSelectionQueryDelegate( session );
92101
}
93102

94-
public ReactiveNativeQueryImpl(
95-
String sqlString,
96-
NamedResultSetMappingMemento resultSetMappingMemento,
97-
AbstractSharedSessionContract session) {
98-
super( sqlString, resultSetMappingMemento, session );
99-
this.selectionQueryDelegate = createSelectionQueryDelegate( session );
100-
}
101-
102103
// Convenient for passing parameters to ReactiveAbstractSelectionQuery using method reference
103104
private <T> T getNull() {
104105
return null;

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

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@
3737
import org.hibernate.sql.ast.SqlAstTranslator;
3838
import org.hibernate.sql.ast.tree.AbstractUpdateOrDeleteStatement;
3939
import org.hibernate.sql.ast.tree.MutationStatement;
40-
import org.hibernate.sql.ast.tree.expression.ColumnReference;
4140
import org.hibernate.sql.ast.tree.expression.Expression;
42-
import org.hibernate.sql.ast.tree.expression.JdbcLiteral;
4341
import org.hibernate.sql.ast.tree.from.MutatingTableReferenceGroupWrapper;
4442
import org.hibernate.sql.ast.tree.from.NamedTableReference;
4543
import org.hibernate.sql.ast.tree.predicate.InSubQueryPredicate;
@@ -95,29 +93,28 @@ protected SqlAstTranslator<? extends JdbcOperationQueryMutation> createTranslato
9593
return factory.getJdbcServices()
9694
.getJdbcEnvironment()
9795
.getSqlAstTranslatorFactory()
98-
.buildMutationTranslator( factory, mutationStatement() );
96+
.buildMutationTranslator( factory, createDeleteAst() );
9997
}
10098

101-
private MutationStatement mutationStatement() {
99+
// Copy and paste from superclass
100+
private MutationStatement createDeleteAst() {
101+
final MutationStatement ast;
102102
if ( entityDescriptor.getSoftDeleteMapping() == null ) {
103-
return sqmInterpretation.getSqlAst();
103+
ast = sqmInterpretation.getSqlAst();
104104
}
105-
final AbstractUpdateOrDeleteStatement sqlDeleteAst = sqmInterpretation.getSqlAst();
106-
final NamedTableReference targetTable = sqlDeleteAst.getTargetTable();
107-
final SoftDeleteMapping columnMapping = getEntityDescriptor().getSoftDeleteMapping();
108-
final ColumnReference columnReference = new ColumnReference( targetTable, columnMapping );
109-
//noinspection rawtypes,unchecked
110-
final JdbcLiteral jdbcLiteral = new JdbcLiteral(
111-
columnMapping.getDeletedLiteralValue(),
112-
columnMapping.getJdbcMapping()
113-
);
114-
final Assignment assignment = new Assignment( columnReference, jdbcLiteral );
115-
116-
return new UpdateStatement(
117-
targetTable,
118-
Collections.singletonList( assignment ),
119-
sqlDeleteAst.getRestriction()
120-
);
105+
else {
106+
final AbstractUpdateOrDeleteStatement sqlDeleteAst = sqmInterpretation.getSqlAst();
107+
final NamedTableReference targetTable = sqlDeleteAst.getTargetTable();
108+
final SoftDeleteMapping columnMapping = getEntityDescriptor().getSoftDeleteMapping();
109+
final Assignment assignment = columnMapping.createSoftDeleteAssignment( targetTable );
110+
111+
ast = new UpdateStatement(
112+
targetTable,
113+
Collections.singletonList( assignment ),
114+
sqlDeleteAst.getRestriction()
115+
);
116+
}
117+
return ast;
121118
}
122119

123120
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/ReactiveQueryProducer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public interface ReactiveQueryProducer extends ReactiveConnectionSupplier {
5757

5858
<R> ReactiveQuery<R> createReactiveQuery(String queryString, Class<R> resultType);
5959

60+
<R> ReactiveQueryImplementor<R> createReactiveNamedQuery(String queryString);
61+
6062
<R> ReactiveQueryImplementor<R> createReactiveNamedQuery(String queryString, Class<R> resultType);
6163

6264
<R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString);

0 commit comments

Comments
 (0)