当前位置: 首页 > 知识库问答 >
问题:

spring boot(mysql和jpa):没有名为'Entity ManagerFactory‘的bean可用

郑佐
2023-03-14

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

@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>

我一直得到下面的错误。我需要补充的是什么?为什么我需要添加一个名为'Entity ManagerFactory‘的bean?而且即使在使用了spring boot之后也有必要吗??

如果有关系的话,我的回购看起来是这样的

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

.________/\/'___()____\\\\(()_'_''/'\\\\\\\/))()))'___.__,

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/类由sureshatta在/users/sureshatta/documents/workspace-sts-3.9.0.release/rightlink中启动)2017-09-13 12:48:38.811信息15361---[main]上下文层次结构的根2017-09-13 12:48:40.380信息15361-[main]S.B.C.E.T.TomCatEmbeddedServletContainer:Tomcat已使用端口初始化:8181(http)2017-09-13 12:48:40.402信息15361---[main]o.apache.catalina.core.StandardService:启动服务[Tomcat]2017-09-13 12:48:40.403信息15361---[main]org.apache.catalina.core.StandardEngine:正在启动Servlet引擎:Apache Tomcat/8.5.16 2017-09-13 12:48:40.566信息15361---[ost-startStop-1]O.A.C.C.C.[Tomcat].[localhost].[/]:正在初始化spring嵌入式WebApplicationContext 2017-09-13 12:48:40.567信息15361---[ost-startStop-1]o.s.web.context.contextLoader:根WebApplicationContext:1705 ms 2017-09-13 12:48:40.743 INFO 15361----[ost-startStop-1]O.S.B.W.Servlet.ServletRegistrationBean:映射servlet:“Dispatcher Servlet”到[/]2017-09-13 12:48:40.752信息15361---[ost-startStop-1]O.S.B.W.Servlet.FilterRegistrationBean:映射筛选器:“Character EncodingFilter”到[/]2017-09-13 12:48:40.753信息15361---[ost-startStop-1]O.S.B.W.Servlet.FilterRegistrationBean:映射筛选器:“Hidden HttpMethodFilter”到[/]2017-09-13 12:48:40.753信息15361---[ost-startStop-1]嵌套异常为org.springframework.beans.factory.unsatisfieddependencyexception:创建名为“reg service”的bean时出错:通过字段“registration repo”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.beanCreationException:创建名为“Registration Repo”的bean时出错:设置bean属性“Entity Manager”时无法创建类型为[org.springframework.orm.jpa.SharedEntityManagerCreator]的内部bean“(内部bean)#43C67247”;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“(内部bean)#43C67247”的bean时出错:设置构造函数参数时无法解析对bean“Entity ManagerFactory”的引用;嵌套异常为org.springframework.beans.factory.nosuchbeandefinitionexception:没有名为“Entity ManagerFactory”的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错误15361-[main]O.S.B.D.LoggingFailureAnalysisReporter:

应用程序启动失败

描述:

RegistrationService中的字段registrationRepo需要一个名为“Entity ManagerFactory”的bean,但找不到该bean。

行动:

考虑在配置中定义一个名为'Entity ManagerFactory‘的bean。

应用程序.属性

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

尝试为repo添加@repository注释,还在main类中添加了@enableJParepositories注释。什么都帮不上忙。

共有1个答案

邬宜然
2023-03-14

问题不是直接与引导版本有关,而是与过时的hibernate JAR有关。由于我在项目中添加了JPA支持,所以在内部使用(??)Hibernate作为JPA实现并尝试使用(??)那些罐子。因为我的本地repo已经损坏了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>

从我的maven本地回购中删除了完整的hibernate文件夹,现在看起来还可以。

 类似资料:
  • 我创建了一个Spring Boot应用程序,并使用我想要执行的方法创建了一个类。将项目部署为war文件时,我从stacktrac中获取错误。我想从类TennisExecitor中运行该方法。 没有名为'entityManagerFactory'的bean可用 创建名为'(内部bean)#366583f9'的bean时出错:设置构造函数参数时无法解析对bean'entityManagerFactor

  • 我正在尝试开发一个新的批与Spring批和jpa。当我尝试启动它时,我收到错误"嵌套异常是org.springframework.beans.factory.NoSuchBean定义异常:没有名为'entityManagerFactory'可用的bean" 我的pom.xml 我的数据源配置类: 我的存储库类: 我的实体类: pplication.properties: 如果我尝试启动应用程序,我

  • 我正在开发一个新的应用程序(对我来说),我在启动时收到了无bean“entityManagerFactory”可用错误。其他经历过这种情况的人表示,如果我正确定义了数据源,这种情况就不会发生。让我困惑的是,Spring Boot/JPA或Flyway(我也在使用)坚持将特定的属性名称用于您的一个数据源。我不知道如果你有一个以上的人会怎么处理。我需要更改我们的申请。属性文件,以便从环境变量中获取值,

  • 我正在SpringBoot中构建一个“Hello World”的基本程序 代码 MyController.java DemoApplication.java

  • 我想开发一个模块化的应用程序,使用MySql数据库,Java11和Spring启动。在我添加模块描述符之前,这个应用程序运行得非常好;所以我只能猜测我在module-info.java中丢失了一些东西,但我不知道它是什么。我感谢任何帮助。这是我的密码 波姆。xml 应用yml module-info.java 使用者JAVA UsersRepository.java 用户资源。JAVA 演示应用程

  • 我正在开发一个小应用程序,只是为了自己尝试Spring Boot。它有五个不同的模块(eclipse项目): 模型——包含实体类、DTO和映射器以在它们之间切换 数据--包含存储库 服务——包含服务及其实现 reserve management--包含预订控制器和spring应用程序本身 人员管理-包含人员数据的控制器和Spring应用程序本身 如果我启动这两个应用中的任何一个,它们都可以正常运行