Spring Boot引入JPA依赖仍提示找不到EnableJpaRepositories符号
解决Spring Boot构建时找不到@EnableJpaRepositories符号的问题
问题概述
Spring Boot项目已引入org.springframework.boot:spring-boot-starter-data-jpa依赖,但执行.\gradlew clean build命令构建失败,提示找不到@EnableJpaRepositories符号。
错误信息
C:\Users\biz\IdeaProjects\genecab-bank\src\main\java\com\genecab\bank\BankApplication.java:8: error: cannot find symbol @EnableJpaRepositories ^ symbol: class EnableJpaRepositories 1 error FAILURE: Build failed with an exception.
BankApplication.java代码
package com.genecab.bank; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.JpaRepository; @SpringBootApplication @EnableJpaRepositories public class BankApplication { public static void main(String[] args) { SpringApplication.run(BankApplication.class, args); } }
build.gradle配置
plugins { id 'java' id 'org.springframework.boot' version '3.0.5' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.genecab' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.data:spring-data-jdbc' implementation 'com.h2database:h2' implementation 'org.flywaydb:flyway-core' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }
执行命令
.\gradlew clean build
预期结果
C:\Users\biz\IdeaProjects\genecab-bank>.\gradlew clean build BUILD SUCCESSFUL in 18s 9 actionable tasks: 9 executed
解决方案
方案1:添加缺失的导入语句
代码中使用了@EnableJpaRepositories注解,但未导入对应的类。在BankApplication.java中添加以下导入:
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
修改后的完整代码:
package com.genecab.bank; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication @EnableJpaRepositories public class BankApplication { public static void main(String[] args) { SpringApplication.run(BankApplication.class, args); } }
方案2:移除@EnableJpaRepositories注解
Spring Boot的@SpringBootApplication注解默认会自动扫描主类所在包(com.genecab.bank)及其子包下的JPA Repository接口。如果你的Repository类都在该范围内,完全可以去掉@EnableJpaRepositories注解,依赖Spring Boot的自动配置即可完成Repository的注册。
修改后的代码:
package com.genecab.bank; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class BankApplication { public static void main(String[] args) { SpringApplication.run(BankApplication.class, args); } }
执行.\gradlew clean build即可构建成功。
内容的提问来源于stack exchange,提问作者M. Franklin
相关产品推荐
相关产品推荐

