web-dev-qa-db-ja.com

IllegalArgumentException:少なくとも1つのJPAメタモデルが存在する必要があります

スプリングレストで開始しながら、私は次のエラーを受け取りました

org.springframework.beans.factory.BeanCreationException:「jpaMappingContext」という名前のBeanの作成エラー:initメソッドの呼び出しに失敗しました。ネストされた例外はJava.lang.IllegalArgumentExceptionです:少なくとも1つのJPAメタモデルが存在する必要があります! org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.Java:1595)〜[spring-beans-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT]でorg.springframeworkで。 beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.Java:566)〜[spring-beans-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT] at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.Java:482)〜[spring-beans-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.Java:304)〜[spring-beans-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.Java: 230)〜[spring-beans-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT] at 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.getBeanで(AbstractBeanFactory.Java:195)〜[spring-beans-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.Java: 725)〜[spring-beans-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.Java:866)〜[spring-context -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)[org-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] at org.springframework.boot.SpringApplication.run(SpringApplication.Java:1150)[spring-boot-2.0 .0.BUILD-SNAPSHOT.jar:2.0.0.BUILD-SNAPSHOT] at com.Java.app.QuickPollApplication.main(QuickPollApplication.Java:14)[classes /:na]原因:Java.lang.IllegalArgumentException:At少なくとも1つの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] at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean。 Java:71)〜[spring-data-jpa-1.11.0.BUILD-SNAPSHOT.jar:na] at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryFactoryBean.createInstance(JpaMetamodelMappingContextFactoryFactory.Java:26)〜[spring -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-beでans-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-SNAPSHOT] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.Java:1591)〜[spring-beans-5.0.0] .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>

私を助けてください。このエラーを解決する方法がわかりません

20
user_xyz.LOL

追加しました

<dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

pom.xmlで。

SpringブートはJPAのエンティティファクトリを自動的に作成しようとしますが、JPAモデルに関しては何も定義していません。

これを削除してみて、これまでに何をしたかをテストしてください。

その後、 this guy のようなspring-data-starter-jpaを使用してチュートリアルを確認できます

23
Andrei Sfat

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

8
AlexGera

次の自動構成クラスを除外することで、Spring Data JPAのリポジトリサポートを無効にすることもできます(たとえば、@EnableAutoConfigurationまたは@SpringBootApplicationアノテーションで)

org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration

例えば:

@EnableAutoConfiguration(exclude = JpaRepositoriesAutoConfiguration.class)
3
nickb

これは私のために働いた。

<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>
0
Nandan