spring boot没有找到实体

时间:2014-11-06 13:42:51

标签: java spring hibernate maven 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启动应用程序将其打包为jar时,Lib应用程序位于/lib/LibApplication.jar内,但是当它尝试访问实体Entity1时,我得到:{{1} }

当从eclipse中执行此操作时,这样可以正常工作,只有在运行spring-boot-plugin生成的jar时它才会中断。

2 个答案:

答案 0 :(得分:0)

最佳做法是仅使用

,而不是单独使用注释。
@SpringBootApplication

注释您的课程,让Spring Boot完成其余的工作。

答案 1 :(得分:0)

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

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

所有内容都应包含在启动应用程序类中,如下所示

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