diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/ToOneAttributeMapping.java b/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/ToOneAttributeMapping.java index 972f9a6cad..cf79a7935f 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/ToOneAttributeMapping.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/ToOneAttributeMapping.java @@ -947,6 +947,11 @@ public class ToOneAttributeMapping final AssociationKey associationKey = foreignKeyDescriptor.getAssociationKey(); final boolean associationKeyVisited = creationState.isAssociationKeyVisited( associationKey ); if ( associationKeyVisited || bidirectionalAttributePath != null ) { + if ( !associationKeyVisited && creationState.isRegisteringVisitedAssociationKeys() ) { + // If the current association key hasn't been visited yet and we are registering keys, + // then there can't be a circular fetch + return null; + } NavigablePath parentNavigablePath = fetchablePath.getParent(); assert parentNavigablePath.equals( fetchParent.getNavigablePath() ); // The parent navigable path is {fk} if we are creating the domain result for the foreign key for a circular fetch @@ -1005,12 +1010,6 @@ public class ToOneAttributeMapping ); } - if ( !associationKeyVisited && creationState.isRegisteringVisitedAssociationKeys() ) { - // If the current association key hasn't been visited yet and we are registering keys, - // then there can't be a circular fetch - return null; - } - /* class Child { @OneToOne