diff --git a/src/main/java/org/springframework/data/mapping/model/ClassGeneratingEntityInstantiator.java b/src/main/java/org/springframework/data/mapping/model/ClassGeneratingEntityInstantiator.java index d24186290..a80ad577d 100644 --- a/src/main/java/org/springframework/data/mapping/model/ClassGeneratingEntityInstantiator.java +++ b/src/main/java/org/springframework/data/mapping/model/ClassGeneratingEntityInstantiator.java @@ -24,6 +24,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.asm.ClassWriter; import org.springframework.asm.MethodVisitor; import org.springframework.asm.Opcodes; @@ -52,6 +54,9 @@ import org.springframework.util.ClassUtils; */ class ClassGeneratingEntityInstantiator implements EntityInstantiator { + private static final Log LOGGER = LogFactory.getLog(ClassGeneratingEntityInstantiator.class); + private static final boolean IN_NATIVE_IMAGE = System.getProperty("org.graalvm.nativeimage.imagecode") != null; + private static final Object[] EMPTY_ARGS = new Object[0]; private final ObjectInstantiatorClassGenerator generator; @@ -137,6 +142,15 @@ class ClassGeneratingEntityInstantiator implements EntityInstantiator { */ boolean shouldUseReflectionEntityInstantiator(PersistentEntity entity) { + if(IN_NATIVE_IMAGE) { + + if(LOGGER.isDebugEnabled()) { + LOGGER.debug(String.format("graalvm.nativeimage - fall back to reflection for %s.", entity.getName())); + } + + return true; + } + Class type = entity.getType(); if (type.isInterface() //