spring-data-jpa 为什么会出现“不是托管类型”错误?

plicqrtu  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(115)

我的主要项目(A)包含结构:X. Y. Z
我的项目依赖于一个jar文件(B),该文件具有a.b.c包结构

项目B包含我在项目A中需要的实体。

项目A中,我指定了以下内容。

@EnableScheduling
@ComponentScan(
    basePackages = {"x.y.z", "a.b.c"},
    includeFilters = {
            @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Indexed.class})
    })
@EntityScan(basePackages = {"x.y.z", "a.b.c"})
@SpringBootApplication
public class Application extends SpringBootServletInitializer { ...

我在项目B中的实体:a. b.c.模型.MyEntity;

import javax.persistence.*;

@Entity
@Table(
    name = "my_entity"
)
@EntityListeners({AuditingEntityListener.class})
public class MyEntity { ...

但每次启动时,我都会收到相同的错误 “不是托管类型:“.我的实体”
我尝试了不同的配置,指定了不同的路径,使用了导入注解,但没有任何效果。

@Configuration
@Import({MyEntity.class})
... Not Work ...
@EntityScan(basePackages = {"x.y.z.*", "a.b.c.*"})
... Not Work ...
@EntityScan(basePackages = {"x.y.z.models.*", "a.b.c.models*"})
... Not Work ...    
@ComponentScan(
    basePackages = {"x.y.z.*", "a.b.c.*"},
    includeFilters = {
            @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Indexed.class})
    })

这总是同样的错误。但是来自项目A的依赖项被毫无问题地加载。
我还有其他项目C D E,它们也依赖于jar项目B,在相同的配置下,它们工作得很好。

hs1rzwqc

hs1rzwqc1#

所以,问题是这种依赖性。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-indexer</artifactId>
    <version>5.3.21</version>
</dependency>

项目B**(a.b.c包)中的Bean只是没有进入META-INF/spring.components**文件。

您需要移除此相依性,或为project B产生您自己的META-INF/spring.components档案。

相关问题