Skip to content

Commit 1951c0b

Browse files
committed
HHH-18478 Retrieve concrete entity descriptor inside entity initializer's resolve state
1 parent 03d9671 commit 1951c0b

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
import static org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer.UNFETCHED_PROPERTY;
8787
import static org.hibernate.engine.internal.ManagedTypeHelper.asPersistentAttributeInterceptable;
8888
import static org.hibernate.engine.internal.ManagedTypeHelper.isPersistentAttributeInterceptable;
89+
import static org.hibernate.internal.util.NullnessUtil.castNonNull;
8990
import static org.hibernate.metamodel.mapping.ForeignKeyDescriptor.Nature.TARGET;
9091
import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer;
9192

@@ -1622,10 +1623,21 @@ public void resolveState(EntityInitializerData data) {
16221623
if ( rowIdAssembler != null ) {
16231624
rowIdAssembler.resolveState( data.getRowProcessingState() );
16241625
}
1626+
if ( data.concreteDescriptor == null ) {
1627+
data.concreteDescriptor = data.defaultConcreteDescriptor;
1628+
if ( data.concreteDescriptor == null ) {
1629+
data.concreteDescriptor = determineConcreteEntityDescriptor(
1630+
data.getRowProcessingState(),
1631+
castNonNull( discriminatorAssembler ),
1632+
entityDescriptor
1633+
);
1634+
}
1635+
}
16251636
resolveEntityState( data );
16261637
}
16271638

16281639
protected void resolveEntityState(EntityInitializerData data) {
1640+
assert data.concreteDescriptor != null;
16291641
final RowProcessingState rowProcessingState = data.getRowProcessingState();
16301642
for ( final DomainResultAssembler<?> assembler : assemblers[data.concreteDescriptor.getSubclassId()] ) {
16311643
if ( assembler != null ) {

0 commit comments

Comments
 (0)