IllegalArgumentException: должно присутствовать хотя бы одна метамодель JPA
начав с весеннего отдыха, я получил следующую ошибку:
org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'jpaMappingContext': сбой вызова метода init; Вложенное исключение - java.lang.IllegalArgumentException: должна присутствовать хотя бы одна метамодель JPA! at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1595) ~ [spring-beans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.swork.ra beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:566) ~ [spring-beans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.sworkwork.prf.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~ [spring-beans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.bee(AbstractBeanFactory.java:304) ~ [spring-beans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.jpg) 230) ~ [spring-beans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.beans.factory.suppo rt.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) ~ [spring-beans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.beans.factory.support.AbstractBeanFactory(AbstractBeanFactory.java:195) ~ [spring-beans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletan(DefaultListableBory) 725) ~ [spring-beans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) ~ [spring- -5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~ [spring-context-5.0.0.BUILD- SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~ [spring-boot-2.0 .0.BUILD-SNAPSHOT.jar: 2.0.0.BUILD-SNAPSHOT] в org.springframework.boot.SpringApplication.refresh(SpringApplication.java:736) [spring-boot-2.0.0.BUILD-SNAPSHOT.jar: 2.0.0.BUILD-SNAPSHOT] в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369) [spring-boot-2.0.0.BUILD-SNAPSHOT.jar: 2.0.0.BUILD-SNAPSHOT] в орг. springframework.boot.SpringApplication.run(SpringApplication.java:313) [spring-boot-2.0.0.BUILD-SNAPSHOT.jar: 2.0.0.BUILD-SNAPSHOT] в org.springframework.boot.SpringApplication.run(SpringApplication. java: 1161) [spring-boot-2.0.0.BUILD-SNAPSHOT.jar: 2.0.0.BUILD-SNAPSHOT] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1150) [spring-boot-2.0.0.BUILD-SNAPSHOT.jar: 2.0.0.BUILD-SNAPSHOT] в com.java.app.QuickPollApplication.main(QuickPollApplication.java:14) [classes/: na] Вызвано: java.lang.IllegalArgumentException: при должна присутствовать хотя бы одна метамодель JPA! в org.springframework.util.Assert.notEmpty(Assert.java:438) ~ [spring-core-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.data.jpa. mapping.JpaMetamodelMappingContext. (JpaMetamodelMappingContext.java:52) ~ [spring-data-jpa-1.11.0.BUILD-SNAPSHOT.jar: na] в org.springframework.data.jpa.repository.config. java: 71) ~ [spring-data-jpa-1.11.0.BUILD-SNAPSHOT.jar: na] в org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMavaBextContext) -data-jpa-1.11.0.BUILD-SNAPSHOT.jar: na] at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:134) ~ [spring-beans-5.0.0.BUILD- SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1654) ~ [spring ans-5.0.0.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.j.0: BeanFactory.j.0:91: spring91) -159191.BUILD-SNAPSHOT.jar: 5.0.0.BUILD-SNAPSHOT]... 16 общих кадров опущено
со следующим кодом
@SpringBootApplication
@RestController
public class QuickPollApplication {
public static void main(String[] args) {
SpringApplication.run(QuickPollApplication.class, args);
}
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String testRest() {
return "rest tested";
}
и ниже мой pom.xml
UTF-8 UTF-8 1.8
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
Пожалуйста, помогите мне. Я не знаю, как решить эту ошибку
Ответы
Ответ 1
Вы добавили
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
в вашем pom.xml.
Spring boot попытается автоматически создать фабрику сущностей для JPA, но вы ничего не определили относительно моделей JPA.
Попробуйте удалить его, чтобы проверить, что вы уже сделали.
После этого вы можете проверить учебник, используя spring-data-starter-jpa, как этот парень
Ответ 2
Я исправил это, установив более новую версию Hibernate.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</exclusion>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
Вы можете найти полностью рабочий пример здесь: https://github.com/zobarov/ptc-task-executor
Ответ 3
Вы также можете отключить поддержку репозитория Spring Data JPA, исключив следующий класс автоматической конфигурации (например, в аннотации @EnableAutoConfiguration
или @SpringBootApplication
)
org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration
Например:
@EnableAutoConfiguration(exclude = JpaRepositoriesAutoConfiguration.class)
Ответ 4
Это сработало для меня.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</exclusion>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>