2017-09-13 62 views
6

開始建設(第一)春季啓動應用程序,這是我的春天啓動主類(Full code on github春天開機(MySQL的使用JPA):無豆命名爲「entityManagerFactory的」可用

@EnableAutoConfiguration 
@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

這裏是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.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>demo</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.6.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <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-jersey</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

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


</project> 

我不斷收到下面的錯誤。我缺少什麼補充?爲什麼我需要添加一個名爲'entityManagerFactory'的bean bean?甚至在使用彈簧引導之後它是必要的?

我的回購協議是這樣的,如果這個問題

public interface RegistrationRepo extends JpaRepository<User, Long> { 
    User findByEmail(String email); 
} 

。 ____ _ __ _ _ /\/' __ _ )_ __ _ \ \ \ \ (()_ | '_ |' | |'/`| \ \ \ \ \/)| | )| | | | | || ( | |)))) '| ____ | 。 | | | | | | __,|//// ========= | _ | ============== | ___/=///_/ :: Spring Boot ::( v1.5.6.RELEASE)

2017-09-13 12:48:38.808信息15361 --- [main] com.rightlink.RightLinkApplication:在Admins-MacBook-Pro.local上啓動RightLinkApplication並使用PID 15361(/ Users /sureshatta/Documents/workspace-sts-3.9.0.RELEASE/RightLink/target/class由sureshatta在/Users/sureshatta/Documents/workspace-sts-3.9.0.RELEASE/RightLink啓動) 2017-09-13 12 :48:38.811信息15361 --- [main] com.rightlink.RightLinkApplication:沒有活動配置文件集,回落到默認配置文件:默認 2017-09-13 12:48:38.865 INFO 15361 --- [main] ationConfigEmbeddedWebApplicationContext :刷新org.springframewor k.boot[email protected]120d6fe6:啓動日期[Wed Sep 13 12:48:38 IST 2017];上下文層次結構的根 2017-09-13 12:48:40.380信息15361 --- [main] sbcetTomcatEmbeddedServletContainer:Tomcat初始化端口:8181(http) 2017-09-13 12:48:40.402 INFO 15361 --- [main] o.apache.catalina.core.StandardService:啓動服務[Tomcat] 2017-09-13 12:48:40.403 INFO 15361 --- [main] org.apache.catalina.core.StandardEngine :啓動Servlet引擎:Apache Tomcat/8.5.16 2017-09-13 12:48:40.566 INFO 15361 --- [ost-startStop-1] oaccC [Tomcat]。[localhost]。[/]:初始化嵌入式Spring WebApplicationContext 2017-09-13 12:48:40.567信息15361 --- [ost-startStop-1] osweb.context.ContextLoader:根WebApplicationContext:初始化在1705年完成ms 2017-09-13 12:48:40.743 INFO 15361 --- [ost-startStop-1] osbwservlet.ServletRegistratio nBean:映射servlet:'dispatcherServlet'到[/] 2017-09-13 12:48:40.752信息15361 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射過濾器:'characterEncodingFilter'到:[/ ] 2017-09-13 12:48:40.753信息15361 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射過濾器:'hiddenHttpMethodFilter'至:[/] 2017-09-13 12: 48:40.753信息15361 --- [ost-startStop-1] osbwservlet。FilterRegistrationBean:映射過濾器:'httpPutFormContentFilter'到:[/ ] 2017-09-13 12:48:40.753信息15361 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射過濾器:'requestContextFilter'到: [/] 2017-09-13 12:48:40.844 WARN 15361 --- [main] ationConfigEmbeddedWebApplicationContext:在上下文初始化期間遇到異常 - 取消刷新嘗試:org.springframework.beans.factory.UnsatisfiedDependencyException:創建具有名稱的bean時出錯'registerController':通過字段'regServices'表示的不滿意的依賴性;嵌套的異常是org.springframework.beans.factory.UnsatisfiedDependencyException:創建名爲'regService'的bean時出錯:通過域'registrationRepo'表示的不滿意的依賴關係;嵌套異常是org.springframework.beans.factory.BeanCreationException:創建名爲'registrationRepo'的bean時出錯:無法在設置bean時創建內部bean'(內部bean)#43c67247'類型爲[org.springframework.orm.jpa.SharedEntityManagerCreator]屬性'entityManager';嵌套異常是org.springframework.beans.factory.BeanCreationException:創建名稱爲'(內部bean)的bean時出錯#43c67247':設置構造函數參數時無法解析對bean'entityManagerFactory'的引用;嵌套異常是org.springframework.beans.factory.NoSuchBeanDefinitionException:沒有名爲'entityManagerFactory'的bean可用 2017-09-13 12:48:40.849 INFO 15361 --- [main] o.apache.catalina.core.StandardService:Stopping服務[Tomcat] 2017-09-13 12:48:40.903信息15361 --- [main] utoConfigurationReportLoggingInitializer:

啓動ApplicationContext時出錯。要顯示自動配置報告,請啓用'debug'重新運行您的應用程序。 2017年9月13日12:48:40.975 ERROR 15361 --- [主要] osbdLoggingFailureAnalysisReporter:


應用程序未能啓動


描述:

領域registrationRepo在玉米.rightlink.services.RegistrationService需要一個名爲'entityManagerFactory'的bean無法找到。

操作:

考慮定義一個配置中的名爲 'entityManagerFactory的' 豆。

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/Test 
spring.datasource.username=root 
spring.datasource.password=root 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.jpa.hibernate.ddl-auto=update 
server.port=8181 

嘗試添加@Repository註釋回購,以及在主類添加@enableJpaRepositories註釋。沒什麼幫助。

+0

Spring(更準確地說是JPA)需要知道你的entityManagerFactory在哪裏,然後用它來管理實體管理器。請參閱https://docs.spring。io/spring-boot/docs/current/reference/html/howto-data-access.html – spiritwalker

+0

@spiritwalker但是我不需要自定義數據源,想用默認的數據源。 –

+0

@ꜱᴜʀᴇꜱʜᴀᴛᴛᴀ你確定這是唯一的日誌消息嗎? – MangEngkus

回答

2

問題不直接與啓動版本和問題是與staled hibernate罐子。由於我添加了對項目的JPA支持,因此在內部使用(??)Hibernate作爲JPA實現並嘗試使用(??)這些jar。由於我的本地回購已損壞hibernate-entity-* jars,這個奇怪的錯誤發生。

他們的comment in the code確認他們在內部使用hibernate。

<!-- JPA Data (We are going to use Repositories, Entities, Hibernate, etc...) --> 

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

從我的maven本地回購中刪除了完整的hibernate文件夾,現在似乎沒問題。

+0

您分享的應用程序適用於我。都使用'1.3.1.RELEASE'和'1.5.6.RELEASE'。我相信當你第一次下載1.5.6時,一個jar可能已經被破壞了。切換到並運行'mvn dependency:purge-local-repository'來移除損壞的jar。 –

+0

Yeap我也有'1.5.6.RELEASE'的spring-boot應用程序,它的工作方式與您的設置相同。 – pleft