Spring启动(带jpa的mysql):没有名为'entityManagerFactory'的bean可用

Sur*_*tta 10 java spring jpa exception spring-boot

开始构建(第一个)spring启动应用程序,这是我的spring boot主类(github上的完整代码)

@EnableAutoConfiguration
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是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>
Run Code Online (Sandbox Code Playgroud)

我一直得到以下错误.我想要添加什么?为什么我需要添加一个名为'entityManagerFactory'的bean bean?甚至在使用弹簧靴之后是否有必要?

如果重要的话,我的回购看起来像这样

public interface RegistrationRepo extends JpaRepository<User, Long> {
     User findByEmail(String email); 
}  
Run Code Online (Sandbox Code Playgroud)

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

2017-09-13 12:48:38.808 INFO 15361 --- [main] com.rightlink.RightLinkApplication:使用PID 15361在Admins-MacBook-Pro.local上启动RightLinkApplication(/Users/sureshatta/Documents/workspace-sts-3.9 .0.RELEASE/RightLink/target/classes由sureshatta在/Users/sureshatta/Documents/workspace-sts-3.9.0.RELEASE/RightLink启动)2017-09-13 12:48:38.811 INFO 15361 --- [main ] com.rightlink.RightLinkApplication:没有活动的配置文件集,回退到默认配置文件:默认2017-09-13 12:48:38.865 INFO 15361 --- [main] ationConfigEmbeddedWebApplicationContext:刷新org.springframework.boot.context.embedded. AnnotationConfigEmbeddedWebApplicationContext @ 120d6fe6:启动日期[Wed Sep 13 12:48:38 IST 2017]; 上下文层次结构根本2017-09-13 12:48:40.380 INFO 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 INFO 15361 --- [ost-startStop-1] osweb.context.ContextLoader:Root WebApplicationContext:初始化在1705 ms完成2017-09-13 12:48:40.743 INFO 15361 --- [ost- startStop-1] osbwservlet.ServletRegistrationBean:映射servlet:'dispatcherServlet'到[/] 2017-09-13 12:48:40.752 INFO 15361 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射过滤器:'characterEncodingFilter'致:[/ ] 2017-09-13 12:48:40 753 INFO 15361 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射过滤器:'hiddenHttpMethodFilter'到:[/ ] 2017-09-13 12:48:40.753 INFO 15361 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射过滤器:'httpPutFormContentFilter'到:[/ ] 2017-09-13 12:48:40.753 INFO 15361 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射过滤器:'requestContextFilter'到:[ / ] 2017-09-13 12:48:40.844 WARN 15361 --- [main] ationConfigEmbeddedWebApplicationContext:在上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为'registerController'的bean时出错:通过字段'regServices'表示的不满意的依赖; 嵌套异常是org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为'regService'的bean时出错:通过字段'registrationRepo'表示的不满意的依赖关系; 嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'registrationRepo'的bean时出错:设置bean时无法创建[org.springframework.orm.jpa.SharedEntityManagerCreator]类型的内部bean'(内部bean)#43c67247' property'entalManager'; 嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'(内部bean)#43c67247'的bean时出错:在设置构造函数参数时无法解析对bean'entalManagerFactory'的引用; 嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为'entityManagerFactory'的bean 2017-09-13 12:48:40.849 INFO 15361 --- [main] o.apache.catalina.core.StandardService:停止服务[Tomcat] 2017-09-13 12:48:40.903 INFO 15361 --- [main] utoConfigurationReportLoggingInitializer:

启动ApplicationContext时出错.要显示自动配置报告,请在启用"debug"的情况下重新运行应用程序.2017-09-13 12:48:40.975 ERROR 15361 --- [主要] osbdLoggingFailureAnalysisReporter:


应用程序未能启动


描述:

com.rightlink.services.RegistrationService中的字段registrationRepo需要一个名为"entityManagerFactory"的bean,该bean无法找到.

行动:

考虑在配置中定义名为"entityManagerFactory"的bean.

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
Run Code Online (Sandbox Code Playgroud)

尝试@Repository为repo 添加注释,并@enableJpaRepositories在主类中添加注释.什么都没有帮助.

Sur*_*tta 4

问题不直接与引导版本有关,而问题与陈旧的休眠罐有关。由于我向项目添加了 JPA 支持,因此在内部启动时使用 (??) Hibernate 作为 JPA 实现并尝试使用 (??) 这些 jar。由于我的本地存储库已损坏hibernate-entity-* jars,因此发生了这个奇怪的错误。

他们在代码中的注释确认了他们在内部使用了 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>
Run Code Online (Sandbox Code Playgroud)

从我的 Maven 本地存储库中删除了完整的 hibernate 文件夹,现在看起来没问题了。