From a2fd152470de963b666f2808293b074204822c16 Mon Sep 17 00:00:00 2001 From: Davide D'Alto Date: Fri, 21 Nov 2025 12:23:07 +0100 Subject: [PATCH] Changes for Hibernate Reactive --- .../internal/EntityInitializerImpl.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java b/hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java index 49173b105725..0fd00cb8dec9 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java @@ -1312,7 +1312,8 @@ protected void upgradeLockMode(EntityInitializerData data) { } } - private boolean isProxyInstance(Object proxy) { + // Used by Hibernate Reactive + protected boolean isProxyInstance(Object proxy) { return proxy != null && ( proxy instanceof MapProxy || entityDescriptor.getJavaType().getJavaTypeClass().isInstance( proxy ) ); } @@ -1405,7 +1406,8 @@ protected Object instantiateEntity(EntityInitializerData data) { .instantiate( data.concreteDescriptor, data.entityKey.getIdentifier() ); } - private Object resolveToOptionalInstance(EntityInitializerData data) { + // Used by Hibernate Reactive + protected Object resolveToOptionalInstance(EntityInitializerData data) { if ( isResultInitializer() ) { // this isEntityReturn bit is just for entity loaders, not hql/criteria final JdbcValuesSourceProcessingOptions processingOptions = @@ -1419,7 +1421,8 @@ private Object resolveToOptionalInstance(EntityInitializerData data) { } } - private boolean matchesOptionalInstance( + // Used by Hibernate Reactive + protected boolean matchesOptionalInstance( EntityInitializerData data, JdbcValuesSourceProcessingOptions processingOptions) { final Object optionalEntityInstance = processingOptions.getEffectiveOptionalObject(); @@ -1429,7 +1432,8 @@ private boolean matchesOptionalInstance( && areKeysEqual( requestedEntityId, data.entityKey.getIdentifier() ); } - private Object resolveInstanceFromCache(EntityInitializerData data) { + // Used by Hibernate Reactive + protected Object resolveInstanceFromCache(EntityInitializerData data) { return loadFromSecondLevelCache( data.getRowProcessingState().getSession().asEventSource(), null, @@ -2005,6 +2009,25 @@ public String toString() { //######################### // For Hibernate Reactive //######################### + protected EntityPersister getRootEntityDescriptor() { + return rootEntityDescriptor; + } + + protected @Nullable Initializer[][] getEagerSubInitializers() { + return eagerSubInitializers; + } + + protected @Nullable Initializer[][] getCollectionContainingSubInitializers() { + return collectionContainingSubInitializers; + } + + protected ImmutableBitSet[] getLazySets() { + return lazySets; + } + + public boolean isHasLazyInitializingSubAssemblers() { + return hasLazyInitializingSubAssemblers; + } protected @Nullable DomainResultAssembler getVersionAssembler() { return versionAssembler;