从MongoDB映射到java类时,我遇到了DefaultTypeMapper的一些问题。作为TestNG测试运行时,一切都很好。但是当我通过IntelliJ IDEA启动应用程序时,我得到一个例外:
org.springframework.data.mapping.model.MappingInstantiationException: Failed to instantiate com.example.SomeAbstractClass
我调试了DefaultTypeMapper,在第150行中找到了:
boolean isMoreConcreteCustomType = rawType == null ? true : rawType.isAssignableFrom(documentsTargetType) && !rawType.equals(documentsTargetType);
表达式rawType.isAssignableFrom(documentsTargetType)
仅在rawType类和documentsTargetType类由同一个类加载器加载时才为true。在我的情况下,表达式(错误地)为false,因为rawType类由 RestartClassLoader 加载,documentsTargetType由 Launcher $ AppClassLoader 。所以isAssignableFrom
的计算结果为false,映射因上述异常而失败。
当我将以下行添加到Main.class时......
System.setProperty("spring.devtools.restart.enabled", "false");
......一切都很好。
那么,这是预期的行为还是spring数据中的错误mongo?
此致 塞巴斯蒂安