@@ -3089,7 +3089,6 @@ private void registerEntityNameUsage(
30893089 actualTableGroup .resolveTableReference ( null , persister .getTableName () );
30903090 }
30913091
3092- final EntityNameUse .UseKind useKind = finalEntityNameUse .getKind ();
30933092 if ( projection ) {
30943093 EntityMappingType superMappingType = persister ;
30953094 while ( ( superMappingType = superMappingType .getSuperMappingType () ) != null ) {
@@ -3100,19 +3099,17 @@ private void registerEntityNameUsage(
31003099 );
31013100 }
31023101 }
3102+
31033103 // If we encounter a treat or projection use, we also want register the use for all subtypes.
31043104 // We do this here to not have to expand entity name uses during pruning later on
3105+ final EntityNameUse .UseKind useKind = finalEntityNameUse .getKind ();
31053106 if ( useKind == EntityNameUse .UseKind .TREAT ) {
31063107 for ( EntityMappingType subType : persister .getSubMappingTypes () ) {
31073108 entityNameUses .compute (
31083109 subType .getEntityName (),
31093110 (s , existingUse ) -> finalEntityNameUse .stronger ( existingUse )
31103111 );
31113112 }
3112- if ( persister .isInherited () && persister .needsDiscriminator () ) {
3113- // Make sure the table group includes the root table when needed for TREAT
3114- actualTableGroup .resolveTableReference ( persister .getRootTableName () );
3115- }
31163113 }
31173114 else if ( useKind == EntityNameUse .UseKind .PROJECTION ) {
31183115 for ( EntityMappingType subType : persister .getSubMappingTypes () ) {
@@ -3358,7 +3355,7 @@ private TableGroup consumeAttributeJoin(
33583355 // This is a non-treated join with an entity which is an inheritance subtype,
33593356 // register a TREAT entity name use to filter only the entities of the correct type.
33603357 registerEntityNameUsage (
3361- getActualTableGroup ( joinedTableGroup , sqmJoin ) ,
3358+ elementTableGroup ,
33623359 EntityNameUse .TREAT ,
33633360 entityDomainType .getHibernateEntityName ()
33643361 );
0 commit comments