spring - 使用 Spring Boot 和 Spring JPA 时 - 为什么我不能为依赖的实体生成模式?
问题描述
我有一个使用 spring-boot-starter-jpa 的 Spring Boot maven 项目,我一直在使用它为内存中的 h2 数据库自动生成数据库表以进行集成测试。
在我将 @Entity 类重构为一个单独的 maven 模块以实现跨其他两个项目的重用之前,这非常有效。
一旦 Entity 类作为 maven 依赖项而不是在同一个模块中,表创建将不再有效。我在 application.properties feil@ 中有以下内容
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.h2.console.enabled=true
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create
Spring 能够注入 @Repository 类,它们是标准的 CrudRepository 接口。
我已将我的应用程序类更改为:
@SpringBootApplication
@EnableJpaRepositories("com.acme.mypackage")
依赖项中包含的 @Entity 类位于 com.acme.mypackage 包中。这没有奏效。
在启动应用程序后使用 h2 控制台时,我可以看到来自依赖项的实体的表没有被创建。
如何让 Spring Boot 自动为 Maven 依赖项中包含的 @Entity 类生成数据库表?
解决方案
您必须使用 @EntityScan 告诉 Spring Data JPA 您的实体位于不同的包中:
@SpringBootApplication
@EntityScan ("com.acme.mypackage")
请在此处找到官方文档:
如果您的存储库位于 SpringBootApplication 类所在的路由层次结构下方,则必须使用带有包名称的 @EnableJpaRepositories。
推荐阅读
- c++ - 静态链接 C++,找不到库
- python - Python Google 文档字符串格式:不止一种类型的参数?
- javascript - 确认执行多次,console.log 仅在 on('click') 事件中执行一次
- c# - Dapper QuerySingleOrDefault 不返回 null
- javascript - 匹配句末的特定单词
- javascript - 如何在angularjs中为图标(从css生成)编写jquery切换功能?
- android - 在android中删除Relativelayout Rule后视图移到顶部
- java - 在java中使用JasperPrint为多个列表导出多个pdf文件
- r - 在 linux 上安装 R 包“rgeos”:找不到 geos-config 或不可执行
- react-native - 在本机反应中处理设备后退按钮