You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot3+JDK17升级后PermissionRepository Bean找不到问题求助

Spring Boot 3.x + JDK17升级后JPA Repository Bean无法找到问题

升级Spring Boot至3.0.5版本,同时将JDK从11升级到17后,应用启动时抛出如下错误:

com.fx.ln.user.DefaultPermissionService的构造器参数0需要类型为com.app.user.repositories.PermissionRepository的Bean,但找不到。

相关代码

PermissionRepository

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface PermissionRepository extends JpaRepository<PermissionEntity, Long> {
   List<PermissionEntity> findPermissionByUserID(UserEntity userEntityId);
}

PermissionEntity

import jakarta.persistence.*;
import lombok.*;
import lombok.experimental.FieldDefaults;
import org.hibernate.Hibernate;

import java.util.Objects;

@Getter
@Setter
@ToString
@RequiredArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "permission")
public class PermissionEntity {
   @Id
   @Column(name = "permission_id", nullable = false)
   long permissionId;

   @ManyToOne
   @JoinColumn(name = "user_id", referencedColumnName = "user_id", nullable = false)
   UserEntity userID;

   @Column(name = "ot_broker_id")
   long otBrockerId;

   @ManyToOne
   @JoinColumn(name = "enq_group_id", referencedColumnName = "enq_group_id", nullable = false)
   EnquiryGroup enquiryGroupId;

   @Column(name = "legal_entity_code")
   String legalEntityCode;

   @Column(name = "access_code")
   String accessCode;

   @Column(name = "access_structure")
   String accessStructure;

   @Column(name = "permission_type")
   long permissionType;

   @Override
   public boolean equals(Object o) {
      if (this == o) {
         return true;
      }
      if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) {
         return false;
      }
      PermissionEntity permission = (PermissionEntity) o;
      return Objects.equals(permissionId, permission.permissionId);
   }

   @Override
   public int hashCode() {
      return getClass().hashCode();
   }
}

pom.xml依赖配置

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.5</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <java.version>17</java.version>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <project.build.sourceEncoding>UTF8</project.build.sourceEncoding>

    <spring-boot-starter-web.version>3.0.5</spring-boot-starter-web.version>
    <spring-webflux.version>6.0.7</spring-webflux.version>
    <spring-security-core.version>6.0.2</spring-security-core.version>
    <spring-security-web.version>6.0.2</spring-security-web.version>

    <springdocopenapi.version>2.0.4</springdocopenapi.version>
    <modelmapper.version>2.4.5</modelmapper.version>
    <lombok.version>1.18.26</lombok.version>
    <git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version>
    <gson.version>2.9.1</gson.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webflux</artifactId>
    </dependency>

    <dependency>
        <groupId>io.projectreactor.netty</groupId>
        <artifactId>reactor-netty</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

    <dependency>
        <groupId>com.oracle.database.jdbc</groupId>
        <artifactId>ojdbc11</artifactId>
    </dependency>
    <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.modelmapper</groupId>
        <artifactId>modelmapper</artifactId>
        <version>${modelmapper.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        <version>${springdocopenapi.version}</version>
    </dependency>

<!--   TEST DEPENDENCIES  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
<!--         <version>${junit.version}</version>-->
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
<!--            <version>${junit.version}</version>-->
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
<!--         <version>${spring-security-core.version}</version>-->
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>mockwebserver</artifactId>
<!--         <version>${mockwebserver.version}</version>-->
        <scope>test</scope>
    </dependency>
</dependencies>

application.yaml配置

spring:
  jpa:
    database-platform: org.hibernate.dialect.OracleDialect
    show-sql: true
    open-in-view: true

  datasource:
    url: ${database_url}  # jdbc:oracle:thin:@server1.domain.com:1521/DEV
    username: ${user}
    password: ${password}
    driver-class-name: oracle.jdbc.OracleDriver
  flyway:
    locations: classpath:db/migration

已尝试的解决方案

  • 移除Flyway脚本及依赖
  • 修改数据库连接地址
  • 升级ojdbc到11版本
  • 将javax.persistence替换为jakarta.persistence
  • 添加@EnableJpaRepositories注解

开启-Dlogging.level.org.springframework=TRACE启动应用后,可看到包含NoSuchBeanDefinitionException在内的多个异常栈信息,但问题仍未解决,希望得到帮助。


内容的提问来源于stack exchange,提问作者Amhyry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:42:25