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>