Spring JPA - 找不到实体管理器工厂,为啥?

Posted

技术标签:

【中文标题】Spring JPA - 找不到实体管理器工厂,为啥?【英文标题】:Spring JPA - entitymanagerfactory that could not be found, why?Spring JPA - 找不到实体管理器工厂,为什么? 【发布时间】:2019-05-25 20:05:37 【问题描述】:

请告诉我如何克服它。 我在构建时使用 Gradle,但出现错误:

Description:
Field userRepository in com.fitness.api.controller.UserController required a bean named 'entityManagerFactory' that could not be found.

Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.

申请文件:

@EnableJpaRepositories("com.test.api.repository")
@SpringBootApplication
public class ApiApplication 

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

application.properties

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
# mysql properties
spring.datasource.url = jdbc:mysql://localhost:3306/test?useSSL=false
spring.datasource.username = root
spring.datasource.password = 1234

## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

build.gradle

buildscript 
    ext 
        springBootVersion = '2.1.0.RELEASE'
    
    repositories 
        mavenCentral()
    
    dependencies 
        classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
    

型号

@Entity
@Table(name = "user")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = "createdAt", "updatedAt",
        allowGetters = true)
public class User implements Serializable 

好像做了功课,但是不能建项目。 很久没解决这个问题,也许有人知道解决办法。

【问题讨论】:

你确定上面的编译了吗?我没有使用 gradle,但我没有看到 spring-data-jpa 的依赖项。 你有compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.0.6.RELEASE' SpringBoot EntityManagerFactory not found的可能重复 【参考方案1】:

如果您排除 DataSourceAutoConfiguration 类,那么您必须手动设置 DataSource bean。

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

【讨论】:

以上是关于Spring JPA - 找不到实体管理器工厂,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

Seam3/Weld - 找不到实体管理器

在 Spring Boot JPA 中找不到实体列名称

JPA工具类

javax.persistence.PersistenceException:无法构建实体管理器工厂

Spring Data Jpa系列教程--------实体解析和关联关系

Spring Data JPA 基础第二篇