spring boot 找不到实体

Posted

技术标签:

【中文标题】spring boot 找不到实体【英文标题】:spring boot not finding Entities 【发布时间】:2015-01-03 01:11:17 【问题描述】:

我正在运行具有以下结构的 Spring Boot 应用程序

Main Application 
 com/my/application/app/boot/AppStarter.java
 depends on Lib Application

Lib Application
 META-INF/package/persistence.xml
 com/my/application/data/Entity1.java

实体 1 是使用 @Entity@Table 注释的持久性对象

AppStarter如下:

@ComponentScan( "com.my.application.sampleScan1",
        "com.my.application.sampleScan2")
@EntityScan(basePackages="com.my.application.data")
@EnableAutoConfiguration
@Configuration
@PropertySources(
        @PropertySource(value = "classpath:application.properties", ignoreResourceNotFound = true),
        @PropertySource(value = "classpath:test.properties", ignoreResourceNotFound = true) )
@ImportResource( "classpath:my/application/fake/fakeContext.xml")
public class FakeAppBooter 

public static void main(String args[]) 
    SpringApplication.run(FakeAppBooter.class, args);


当我使用 spring boot 应用程序将其打包为 jar 时,Lib 应用程序位于 /lib/LibApplication.jar 内,但是当它尝试访问实体 Entity1 时,我得到一个:org.hibernate.MappingException: Unknown entity: com.my.application.data.Entity1

当它在 Eclipse 中执行时,它工作正常,它只会在我运行 spring-boot-plugin 生成的 jar 时中断。

【问题讨论】:

同一条船。有桨吗? 这已经很久了,我不记得实际的问题是什么。我记得的是 Spring boot 注释和 xml 配置不能很好地协同工作。如果您可以尝试切换到仅注释或仅 xml 配置,它可能会有所帮助。 我错过了@EntityScan 【参考方案1】:

您需要对所有包进行组件扫描,并对所有实体进行实体扫描

com.uganda.** 和 com.uganda.**.entity

所有内容都应包含在您的引导应用程序类中,如下所示

 @SpringBootApplication
 @ComponentScan( "com.uganda")
 @EntityScan(basePackages= "com.uganda")
 public class MyBootpApplication 

【讨论】:

【参考方案2】:

最好不要单独使用注解,最好只使用

@SpringBootApplication

注释你的类,让 Spring Boot 完成剩下的工作。

【讨论】:

以上是关于spring boot 找不到实体的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Boot 应用程序中找不到类型现金流的属性日期

找不到符号 - Spring Boot Maven 兄弟作为依赖

Spring boot多模块项目编译报错:找不到符号

如何修复“java.sql.SQLException:找不到列 'id'。” Spring Boot 中的错误

Spring Boot Jackson ResponseEntity 找不到类的序列化程序

找不到 Spring Boot Mongo Reactive 类 - 找不到类 [org.springframework.data.mongodb.MongoDatabaseFactory]