diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4aa5309d6..aa00e96ee 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] assertjVersion = "3.27.6" -hibernateOrmVersion = "7.2.0.CR2" -hibernateOrmGradlePluginVersion = "7.2.0.CR2" +hibernateOrmVersion = "7.2.0.CR3" +hibernateOrmGradlePluginVersion = "7.2.0.CR3" jacksonDatabindVersion = "2.20.1" jbossLoggingAnnotationVersion = "3.0.4.Final" jbossLoggingVersion = "3.6.1.Final" diff --git a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/persister/entity/mutation/ReactiveInsertCoordinatorStandard.java b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/persister/entity/mutation/ReactiveInsertCoordinatorStandard.java index 3fa811b99..cbc599f5a 100644 --- a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/persister/entity/mutation/ReactiveInsertCoordinatorStandard.java +++ b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/persister/entity/mutation/ReactiveInsertCoordinatorStandard.java @@ -415,9 +415,8 @@ else if ( isValueGenerationInSql( generator, factory().getJdbcServices().getDial final BasicEntityIdentifierMapping identifierMapping = (BasicEntityIdentifierMapping) entityPersister().getIdentifierMapping(); final String[] columnValues = generator.getReferencedColumnValues( dialect ); tableMapping.getKeyMapping().forEachKeyColumn( (i, column) -> tableInsertBuilder.addKeyColumn( - column.getColumnName(), columnValues[i], - identifierMapping.getJdbcMapping() + identifierMapping ) ); } } diff --git a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/exec/internal/ReactiveJdbcSelectWithActions.java b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/exec/internal/ReactiveJdbcSelectWithActions.java index 3f6b8e28f..c8b4c5134 100644 --- a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/exec/internal/ReactiveJdbcSelectWithActions.java +++ b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/exec/internal/ReactiveJdbcSelectWithActions.java @@ -132,7 +132,7 @@ public static class Builder implements JdbcSelectWithActionsBuilder { protected LockOptions lockOptions; protected QuerySpec lockingTarget; protected LockingClauseStrategy lockingClauseStrategy; - boolean isFollonOnLockStrategy; + boolean isFollowOnLockStrategy; @Override public Builder setPrimaryAction(JdbcSelect primaryAction) { @@ -179,8 +179,8 @@ public Builder setLockingClauseStrategy(LockingClauseStrategy lockingClauseStrat } @Override - public Builder setIsFollowOnLockStrategy(boolean isFollonOnLockStrategy) { - this.isFollonOnLockStrategy = isFollonOnLockStrategy; + public Builder setIsFollowOnLockStrategy(boolean isFollowOnLockStrategy) { + this.isFollowOnLockStrategy = isFollowOnLockStrategy; return this; } @@ -194,7 +194,7 @@ public JdbcSelect build() { ) ); } - if ( isFollonOnLockStrategy ) { + if ( isFollowOnLockStrategy ) { ReactiveFollowOnLockingAction.apply( lockOptions, lockingTarget, lockingClauseStrategy, this ); } diff --git a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/exec/internal/lock/ReactiveFollowOnLockingAction.java b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/exec/internal/lock/ReactiveFollowOnLockingAction.java index 4fd59a2b0..7cedd33e5 100644 --- a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/exec/internal/lock/ReactiveFollowOnLockingAction.java +++ b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/exec/internal/lock/ReactiveFollowOnLockingAction.java @@ -8,11 +8,9 @@ import org.hibernate.LockMode; import org.hibernate.LockOptions; import org.hibernate.Locking; -import org.hibernate.engine.spi.CollectionKey; import org.hibernate.engine.spi.EntityKey; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.metamodel.mapping.EntityMappingType; -import org.hibernate.metamodel.mapping.PluralAttributeMapping; import org.hibernate.metamodel.mapping.TableDetails; import org.hibernate.reactive.logging.impl.Log; import org.hibernate.reactive.logging.impl.LoggerFactory; @@ -32,10 +30,8 @@ import java.lang.invoke.MethodHandles; import java.sql.Connection; import java.util.List; -import java.util.Map; import java.util.concurrent.CompletionStage; -import static java.util.Collections.emptyMap; import static org.hibernate.reactive.util.impl.CompletionStages.loop; /** @@ -98,10 +94,7 @@ public CompletionStage reactivePerformReactivePostAction( // collect registrations by entity type final var entitySegments = segmentLoadedValues(); - final Map>> collectionSegments = - lockScope == Locking.Scope.INCLUDE_FETCHES - ? segmentLoadedCollections() - : emptyMap(); + final var collectionSegments = segmentLoadedCollections(); // for each entity-type, prepare a locking select statement per table. // this is based on the attributes for "state array" ordering purposes - diff --git a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/results/graph/entity/internal/ReactiveEntityInitializerImpl.java b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/results/graph/entity/internal/ReactiveEntityInitializerImpl.java index 0ae83243f..05b775f23 100644 --- a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/results/graph/entity/internal/ReactiveEntityInitializerImpl.java +++ b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/results/graph/entity/internal/ReactiveEntityInitializerImpl.java @@ -23,7 +23,6 @@ import org.hibernate.metamodel.mapping.internal.ToOneAttributeMapping; import org.hibernate.persister.entity.EntityPersister; import org.hibernate.proxy.LazyInitializer; -import org.hibernate.proxy.map.MapProxy; import org.hibernate.reactive.session.ReactiveQueryProducer; import org.hibernate.reactive.sql.exec.spi.ReactiveRowProcessingState; import org.hibernate.reactive.sql.results.graph.ReactiveDomainResultsAssembler; @@ -45,7 +44,6 @@ import static org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer.UNFETCHED_PROPERTY; import static org.hibernate.engine.internal.ManagedTypeHelper.asPersistentAttributeInterceptable; import static org.hibernate.engine.internal.ManagedTypeHelper.isPersistentAttributeInterceptable; -import static org.hibernate.loader.internal.CacheLoadHelper.loadFromSecondLevelCache; import static org.hibernate.metamodel.mapping.ForeignKeyDescriptor.Nature.TARGET; import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer; import static org.hibernate.reactive.util.impl.CompletionStages.completedFuture; @@ -143,11 +141,7 @@ public ReactiveEntityInitializerImpl( protected void resolveEntityKey(EntityInitializerData original, Object id) { ReactiveEntityInitializerData data = (ReactiveEntityInitializerData) original; if ( data.getConcreteDescriptor() == null ) { - data.setConcreteDescriptor( determineConcreteEntityDescriptor( - data.getRowProcessingState(), - getDiscriminatorAssembler(), - getEntityDescriptor() - ) ); + data.setConcreteDescriptor( determineConcreteEntityDescriptor( data.getRowProcessingState(), discriminatorAssembler(), getEntityDescriptor() ) ); assert data.getConcreteDescriptor() != null; } data.setEntityKey( new EntityKey( id, data.getConcreteDescriptor() ) ); @@ -186,9 +180,9 @@ assert getInitializedPart() instanceof ToOneAttributeMapping else if ( lazyInitializer.isUninitialized() ) { data.setState( State.RESOLVED ); // Read the discriminator from the result set if necessary - EntityPersister persister = getDiscriminatorAssembler() == null + EntityPersister persister = discriminatorAssembler() == null ? getEntityDescriptor() - : determineConcreteEntityDescriptor( rowProcessingState, getDiscriminatorAssembler(), getEntityDescriptor() ); + : determineConcreteEntityDescriptor( rowProcessingState, discriminatorAssembler(), getEntityDescriptor() ); data.setConcreteDescriptor( persister ); assert data.getConcreteDescriptor() != null; resolveEntityKey( data, lazyInitializer.getIdentifier() ); @@ -592,34 +586,6 @@ private Object resolveToOptionalInstance(ReactiveEntityInitializerData data) { } } - // FIXME: I could change the scope of this method in ORM - private boolean isProxyInstance(Object proxy) { - return proxy != null - && ( proxy instanceof MapProxy || getEntityDescriptor().getJavaType().getJavaTypeClass().isInstance( proxy ) ); - } - - // FIXME: I could change the scope of this method in ORM - private Object resolveInstanceFromCache(ReactiveEntityInitializerData data) { - return loadFromSecondLevelCache( - data.getRowProcessingState().getSession().asEventSource(), - null, - data.getLockMode(), - getEntityDescriptor(), - data.getEntityKey() - ); - } - - // FIXME: I could change the scope of this method in ORM - private boolean matchesOptionalInstance( - ReactiveEntityInitializerData data, - JdbcValuesSourceProcessingOptions processingOptions) { - final Object optionalEntityInstance = processingOptions.getEffectiveOptionalObject(); - final Object requestedEntityId = processingOptions.getEffectiveOptionalId(); - return requestedEntityId != null - && optionalEntityInstance != null - && requestedEntityId.equals( data.getEntityKey().getIdentifier() ); - } - private boolean isExistingEntityInitialized(Object existingEntity) { return Hibernate.isInitialized( existingEntity ); } @@ -779,7 +745,7 @@ private CompletionStage initializeId(ReactiveEntityInitializerData data else { data.setConcreteDescriptor( determineConcreteEntityDescriptor( rowProcessingState, - getDiscriminatorAssembler(), + discriminatorAssembler(), getEntityDescriptor() ) ); assert data.getConcreteDescriptor() != null;