diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java index 56fb375d55..e025340b9c 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java @@ -171,25 +171,26 @@ public boolean isMetamodelManagedType(Class type) { */ @Nullable private Metamodel getMetamodelFor(Class type) { - - for (Metamodel model : metamodels) { - - try { + Metamodel currentModel = null; + try { + for (Metamodel model : metamodels) { + currentModel = model; model.managedType(type); return model; - } catch (IllegalArgumentException o_O) { - - // Fall back to inspect *all* managed types manually as Metamodel.managedType(…) only - // returns for entities, embeddables and managed superclasses. - - for (ManagedType managedType : model.getManagedTypes()) { + } + } catch (IllegalArgumentException o_O) { + + // Fall back to inspect *all* managed types manually as Metamodel.managedType(…) only + // returns for entities, embeddables and managed superclasses. + + if (currentModel != null) { + for (ManagedType managedType : currentModel.getManagedTypes()) { if (type.equals(managedType.getJavaType())) { - return model; + return currentModel; } } } } - return null; } }