HHH-18478 Retrieve concrete entity descriptor inside entity initializer's resolve state
This commit is contained in:
parent
8af344e48a
commit
48607ade1c
|
@ -86,7 +86,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
import static org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer.UNFETCHED_PROPERTY;
|
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.asPersistentAttributeInterceptable;
|
||||||
import static org.hibernate.engine.internal.ManagedTypeHelper.isPersistentAttributeInterceptable;
|
import static org.hibernate.engine.internal.ManagedTypeHelper.isPersistentAttributeInterceptable;
|
||||||
import static org.hibernate.internal.log.LoggingHelper.toLoggableString;
|
import static org.hibernate.internal.util.NullnessUtil.castNonNull;
|
||||||
import static org.hibernate.metamodel.mapping.ForeignKeyDescriptor.Nature.TARGET;
|
import static org.hibernate.metamodel.mapping.ForeignKeyDescriptor.Nature.TARGET;
|
||||||
import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer;
|
import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer;
|
||||||
|
|
||||||
|
@ -1603,10 +1603,21 @@ public class EntityInitializerImpl extends AbstractInitializer<EntityInitializer
|
||||||
if ( rowIdAssembler != null ) {
|
if ( rowIdAssembler != null ) {
|
||||||
rowIdAssembler.resolveState( data.getRowProcessingState() );
|
rowIdAssembler.resolveState( data.getRowProcessingState() );
|
||||||
}
|
}
|
||||||
|
if ( data.concreteDescriptor == null ) {
|
||||||
|
data.concreteDescriptor = data.defaultConcreteDescriptor;
|
||||||
|
if ( data.concreteDescriptor == null ) {
|
||||||
|
data.concreteDescriptor = determineConcreteEntityDescriptor(
|
||||||
|
data.getRowProcessingState(),
|
||||||
|
castNonNull( discriminatorAssembler ),
|
||||||
|
entityDescriptor
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
resolveEntityState( data );
|
resolveEntityState( data );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void resolveEntityState(EntityInitializerData data) {
|
protected void resolveEntityState(EntityInitializerData data) {
|
||||||
|
assert data.concreteDescriptor != null;
|
||||||
final RowProcessingState rowProcessingState = data.getRowProcessingState();
|
final RowProcessingState rowProcessingState = data.getRowProcessingState();
|
||||||
for ( final DomainResultAssembler<?> assembler : assemblers[data.concreteDescriptor.getSubclassId()] ) {
|
for ( final DomainResultAssembler<?> assembler : assemblers[data.concreteDescriptor.getSubclassId()] ) {
|
||||||
if ( assembler != null ) {
|
if ( assembler != null ) {
|
||||||
|
|
Loading…
Reference in New Issue