簡體   English   中英

Spring Boot:無法識別 Maven 依賴項中的實體:“不是托管類型”

[英]Spring Boot: Entities within a Maven dependency not recognized: "Not a managed type"

我有一個主要的 Spring Boot 項目,它依賴於我們想要放入依賴庫中的一些實體類。

主 Spring Boot 應用程序在包com.mycompany中有一個主類,如下所示:

package com.mycompany;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;


//@EntityScan("com.mycompany.library.*")
@SpringBootApplication
public class MainAppApplication {

    public static void main(String[] args) {

        SpringApplication.run(MainAppApplication.class, args);
    }

}

請注意上面的內容,我已經嘗試過使用注釋行和不使用注釋行,效果相同。

庫依賴基礎包是com.mycompany.library ,包含實體的包是com.mycompany.library.entity 這是一個示例實體:

package com.mycompany.library.entity;

import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

import com.mycompany.library.constants.MemberStatus;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class Member {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "member_id")
    private Long memberId;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    private String address;

    private String email;

    @Column(name = "phone_number")
    private String phoneNumber;

    @Enumerated(EnumType.STRING)
    private MemberStatus status;

}

JPA 存儲庫也位於依賴庫中,例如:

package com.mycompany.library.repository;

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

import com.mycompany.library.entity.Member;

public interface MemberRepository extends JpaRepository<Member, Long>{

}

當我嘗試啟動主應用程序時。 我收到以下錯誤:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository' defined in com.mycompany.library.repository.MemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Not a managed type: class com.mycompany.library.entity.Member

我該怎么做才能成功識別實體並使 JPA 存儲庫在此體系結構中正常工作?

好的,所以我遇到的問題(可能無法從問題中找出來)是主應用程序和依賴庫具有不同版本的 Spring Boot。

該庫有 Spring Boot 版本 2.7.5,較新的主應用程序有 Spring Boot 3.0.0,這是一個重大變化。

當我將庫上的 Spring Boot 版本更改為 3.0.0 時,我還必須重命名實體類上的導入。 包已重命名。

以下導入在 Spring Boot 3.0.0 附帶的 Spring Boot JPA starter 中不再有效:

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

相反,我使用了這些並且應用程序按預期工作:

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM