模块中的 Springboot 数据 JPA @Entity 不是托管类型

问题描述 投票:0回答:1

一直试图找出为什么一整天,大量阅读和改变,但进展为零。

我有一个数据库模块,其中有一个用 @Entiy 标记的类,如下所示:

@NoArgsConstructor
@AllArgsConstructor
@Getter
@ToString
@Entity
@Table(name = "company")
public class Company {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "company_id", nullable = false)
    private long id;

    @Column(name = "company_name", nullable = false)
    private String name;

    @Column(name = "addr1")
    private String adress1;

    @Column(name = "addr2")
    private String adress2;

    @Column(name = "addr3")
    private String adress3;

    @Column(name = "addr4")
    private String adress4;

    @Column(name = "postcode")
    private String postcode;
}

和一个存储库

@Repository
public interface CompanyRepository extends JpaRepository<Company, Long> {
    List<Company> findByName(String companyName);

    @Query("SELECT c FROM Company c WHERE LOWER(c.name) LIKE LOWER(concat('%', :name,'%'))")
    List<Company> findByNameLike(@Param("name") String name);
}

还有服务,因为我将拥有更多的课程和存储库

@Service
public class DatabaseService {
    private final CompanyRepository companyRepository;

    @Autowired
    public DatabaseService(CompanyRepository companyRepository) {
        this.companyRepository = companyRepository;
    }

    public List<Company> findByName(String companyName) {
        return companyRepository.findByName(companyName);
    }

    public List<Company> findByNameLike(String companyName) {
        return companyRepository.findByNameLike(companyName);
    }
}

最初,这些是在子包中,但我读到的一种可能的解决方案是将它们全部放在同一个包中,这就是它们现在的样子。

我什至尝试将其全部从模块移到主应用程序中,但同样的问题。

患有阅读障碍,我花了很多时间检查代码,检查每个单词的每个字符,没有大小写或顺序错误,即如果拼写错误,则始终拼写错误。

数据库模型gradle文件

plugins {
    java
    idea
    id("org.springframework.boot") version "3.2.4"
    id("io.spring.dependency-management") version "1.1.4"
}

group = "co.uk.myapp"
version = "0.0.1-SNAPSHOT"

val lombokVersion = "1.18.30"

repositories {
    mavenCentral()
}

dependencies {
    compileOnly("org.projectlombok:lombok:$lombokVersion")
    annotationProcessor("org.projectlombok:lombok:$lombokVersion")

    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation( "org.postgresql:postgresql:42.7.2")
    implementation( "com.zaxxer:HikariCP:5.1.0")

    testImplementation(platform("org.junit:junit-bom:5.10.0"))
    testImplementation("org.junit.jupiter:junit-jupiter")
}

tasks.test {
    useJUnitPlatform()
}

主项目gradle文件仅在依赖项上有所不同

dependencies {
    implementation(project(":database"))

    compileOnly("org.projectlombok:lombok:$lombokVersion")
    annotationProcessor("org.projectlombok:lombok:$lombokVersion")

    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-data-rest")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-webflux")
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
    implementation("org.springframework.session:spring-session-core")

    developmentOnly("org.springframework.boot:spring-boot-devtools")

    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("io.projectreactor:reactor-test")
}

应用程序.yml

spring:
  application:
    name: "Management App"
  main:
    allow-bean-definition-overriding: true
  thymeleaf:
  cache: false
  datasource:
  driver-class-name: org.postgresql.Driver
  url: jdbc:postgresql://localhost:5000/management
  username: user_man
  password:
  statement-cache-size: 250
  statement-cache-sql-limit: 2048
  hikari:
    pool-name: MyHikariPool
    connection-timeout: 30000
    maximum-pool-size: 10
    minimum-idle: 5
    idle-timeout: 600000
    max-lifetime: 1800000   

肯定做了什么蠢事,但我看不到!

spring-boot spring-data-jpa
1个回答
0
投票

尝试在主类上添加

@EntityScan("com.entity.package")

© www.soinside.com 2019 - 2024. All rights reserved.