2015-11-17 128 views
1

我建立應用程序使用Spring啓動和休眠和添加庫後,我得到這樣的錯誤:春季啓動EnableJpaRepositories錯誤

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.2.7.RELEASE:run (default-cli) on project app: An exception occured while running. null: InvocationTargetException: Failed to read candidate component class: file [/home/scabbard/projects/app/app-back-end/target/classes/com/springapp/app/config/RepositoryConfig.class]; nested exception is java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.jpa.repository.config.EnableJpaRepositories.repositoryBaseClass() -> [Help 1] 

因爲它看起來像這個問題是EnableJpaRepositories,但找不出爲什麼。

下面是其他文件:

庫文件

package com.springapp.app.repository; 

import com.springapp.app.entity.PressEntity; 
import org.springframework.data.jpa.repository.JpaRepository; 
import org.springframework.stereotype.Repository; 

@Repository 
public interface PressRepository extends JpaRepository<PressEntity, Long> { 
} 

配置文件

package com.springapp.app.config; 

import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.orm.jpa.EntityScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 

@Configuration 
@EnableJpaRepositories("com.springapp.app.repository") 
@EnableAutoConfiguration 
@EntityScan("com.springapp.app.entity") 
public class RepositoryConfig { 
} 

的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.springapp.app</groupId> 
    <artifactId>app</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>App</name> 

    <!-- Inherit defaults from Spring Boot --> 
    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.2.7.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
      <version>1.2.7.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.9.0.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.4-1205-jdbc42</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>5.0.2.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-annotations</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 


    </dependencies> 

    <properties> 
     <java.version>1.8</java.version> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>1.2.7.RELEASE</version> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </pluginRepository> 
    </pluginRepositories> 

</project> 
+1

首先你應該刪除依賴hibernate-annotations。這不再是必要的,可能會導致依賴衝突。其次,我建議使用依賴「spring-boot-starter-data-jpa」而不是「spring-data-jpa」。 – dunni

+0

你能解釋一下爲什麼不需要Hibernate的依賴關係,因爲我猜「spring-boot-starter-data-jpa」已經有了它們,但不明白爲什麼? – Shota

+1

不需要hibernate-annotations。正如你所看到的,hibernate-annotations的版本是3.5.6,所以它很舊,而且不再需要更新的hibernate版本。 「spring-boot-starter-data-jpa」將作爲默認的JPA提供程序引入Hibernate,因此您可以選擇刪除hibernate-entitymanager依賴項或將其留在POM中,這並不重要。 – dunni

回答

0

改變休眠後相關性的nd「spring-data-jpa」和「spring-boot-starter-data-jpa」並添加了「application.properties」,它解決了我的問題。