在我的library
中,我有一些Entities
和Repositories
,我想将它们包含在我的弹簧启动项目中。
这是@Confituration
类的示例library
package com.mylibrary.config
@Configuration
@ComponentScan("com.mylibrary.service")
@EntityScan("com.mylibrary.repo")
@EnableJpaRepositories("com.mylibrary.repo")
@ConditionalOnClass(value = [DataSource::class])
open class MyCustomConfigFromLibrary
这样我尝试在我的弹簧启动项目中包含MyCustomConfigFromLibrary
package com.mainapp
@SpringBootApplication
@Import(value = [MyCustomConfigFromLibrary::class])
class Application
但是当我运行我的 spring-boot 应用程序时,它不需要扫描Repositories
并从我的 spring-boot 项目本身Entities
。它扫描其Components
,但不扫描其Repositories
和Entities
。Repositories
和Entities
它扫描的只是来自我的library
.
因此,为了修复它,我找到了我do not
喜欢的解决方案!我只是明确地将@EntityScan
和@EnableJpaRepositories
添加到我的Application
类中。
package com.mainapp
@SpringBootApplication
@Import(value = [MyCustomConfigFromLibrary::class])
@EntityScan
@EnableJpaRepositories
class Application
据我所知,如果您使用的是自己的自定义模式.sql和/或数据.sql那么 Spring Boot 不会检测到 JPA 存储库或实体。如果希望应用程序扫描这些类,请尝试从资源文件夹中删除自定义架构.sql/data.sql。
在基于 JPA 的应用程序中,您不应该同时使用spring.jpa.hibernate.ddl-auto和schema.sql。如果使用schema.sql,请确保禁用spring.jpa.hibernate.ddl-auto。
参考资料 - https://walkingtechie.blogspot.com/2018/12/execute-schema-and-data-sql-on-startup-spring-boot.html