mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-17 00:24:57 +00:00
HHH-17832 Register projection usage for circular bidirectional fetch
This commit is contained in:
parent
747a1024da
commit
bcbae00552
@ -60,6 +60,7 @@
|
||||
import org.hibernate.metamodel.model.domain.NavigableRole;
|
||||
import org.hibernate.persister.collection.AbstractCollectionPersister;
|
||||
import org.hibernate.persister.entity.AbstractEntityPersister;
|
||||
import org.hibernate.persister.entity.EntityNameUse;
|
||||
import org.hibernate.persister.entity.EntityPersister;
|
||||
import org.hibernate.persister.entity.JoinedSubclassEntityPersister;
|
||||
import org.hibernate.property.access.spi.PropertyAccess;
|
||||
@ -1300,6 +1301,12 @@ else if ( CollectionPart.Nature.fromNameExact( parentNavigablePath.getLocalName(
|
||||
final FromClauseAccess fromClauseAccess = creationState.getSqlAstCreationState().getFromClauseAccess();
|
||||
final TableGroup tableGroup = fromClauseAccess.getTableGroup( referencedNavigablePath );
|
||||
fromClauseAccess.registerTableGroup( fetchablePath, tableGroup );
|
||||
// Register a PROJECTION usage as we're effectively selecting the bidirectional association
|
||||
creationState.getSqlAstCreationState().registerEntityNameUsage(
|
||||
tableGroup,
|
||||
EntityNameUse.PROJECTION,
|
||||
entityMappingType.getEntityName()
|
||||
);
|
||||
return buildEntityFetchJoined(
|
||||
fetchParent,
|
||||
this,
|
||||
|
@ -3047,7 +3047,12 @@ public void registerEntityNameUsage(
|
||||
TableGroup tableGroup,
|
||||
EntityNameUse entityNameUse,
|
||||
String hibernateEntityName) {
|
||||
registerEntityNameUsage( tableGroup, entityNameUse, hibernateEntityName, false );
|
||||
registerEntityNameUsage(
|
||||
tableGroup,
|
||||
entityNameUse,
|
||||
hibernateEntityName,
|
||||
entityNameUse.getKind() == EntityNameUse.UseKind.PROJECTION
|
||||
);
|
||||
}
|
||||
|
||||
private void registerEntityNameUsage(
|
||||
|
Loading…
x
Reference in New Issue
Block a user