Должна присутствовать хотя бы одна метамодель JPA!, или почему я получаю неправильную фабрику бобов?

Я преобразую приложение Spring Boot для использования модулей Java с помощью Moditect. Я сталкиваюсь с этой проблемой:

java.lang.IllegalArgumentException: At least one JPA metamodel must be present!
    at spring.core@5.0.7.RELEASE/org.springframework.util.Assert.notEmpty(Assert.java:450)
    at spring.data.jpa@2.0.8.RELEASE/org.springframework.data.jpa.mapping.JpaMetamodelMappingContext.<init>(JpaMetamodelMappingContext.java:54)
    at spring.data.jpa@2.0.8.RELEASE/org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:90)
    at spring.data.jpa@2.0.8.RELEASE/org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:43)
    at spring.beans@5.1.0.BUILD-SNAPSHOT/org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:142)
    at spring.beans@5.1.0.BUILD-SNAPSHOT/org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1778)
    at spring.beans@5.1.0.BUILD-SNAPSHOT/org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1715)
    ... 27 more

Похоже, что исключение исходит из этой строки: https://github.com/spring-projects/spring-data-jpa/blob/2.0.x/src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java#L54

Я спускаюсь по большой кроличьей норе, пытаясь понять, почему models пусто при использовании модулей Java, но не когда они не используются. Мой самый важный вывод заключается в том, что в JpaMetamodelMappingContextFactoryBean Я получаю разные бобовые фабрики в зависимости от того, использую я модули или нет.

В частности, на setApplicationContext, когда не использую модели, я получаю

[org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@20fd8ce5: startup date [Fri Jul 13 18:53:48 BST 2018]; root of context hierarchy]

в то время как при использовании модулей я получаю

[org.springframework.context.annotation.AnnotationConfigApplicationContext@150c158: startup date [Fri Jul 13 18:40:48 BST 2018]; root of context hierarchy]

Я не совсем то, что делать отсюда. Есть идеи, почему они получат разные классы? Я пытался добавить opens org.springframework.boot.web.servlet.context но это не помогло

0 ответов

Другие вопросы по тегам