3 回答
TA贡献1851条经验 获得超4个赞
首先,一些检查:
您的所有配置是否仅使用 ServerApplication 或任何 Java 类中的注释构建,或者在 XML/YML 文件中是否还有其他外部配置?也许寻找冲突。如果可能,我们不希望将 XML 与注释配置混合使用。
尝试删除
@Serializable
(不是强制性的)。尝试在您的根包中移动您的实体(作为测试)。
检查导出的包
@Entity
是否正确。
问题:你所说的“模块”是什么,它是一个子包或 Maven 模块还是其他东西?我们可以有关于这个的包名的配置吗?
编辑:
对于多模块项目,您是否遵循了spring.io关于多模块项目的建议?您是否在子模块中导入了 Spring BOM(或启动器)并测试了Spring Boot Maven 插件?
你能提供你的
application.properties
(或application.yml
其他)你的数据源配置吗?您应该检查您的数据源(和 JPA、驱动程序类等)是否正确定义;见spring.io
TA贡献1785条经验 获得超8个赞
所以碰巧我没有正确使用 SpringBoot 功能。这是我遵循的步骤。请记住项目的架构:
- Parent maven project (my.package)
|-Module Base (with IndexSetup class and [initialy] hibernate.cfg.xml in /resources. It also had in the beginning LocalDatabase class to access to the local db via hibernate)
|-Module Indexing (that depends on Base)
|-Module Server (that also depends on Base)
|-Database file (myLocalDB)
1) 首先,我hibernate.cfg.xml从 Base 中删除并将其放入索引模块的资源中。我这样做是因为 SpringBoot 有自己的配置机制。我还从 Base 中删除了 LocalDatabase 类(因为 SpringBoot 不需要它)并将它也放到索引模块中(确实在那里使用了它)。
2) 按照 [this]( https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html]我添加spring-boot-starter-data-jpa到服务器模块 pom.xml。
3)按照本教程,我创建了一个IndexSetupRepository几乎没有一行代码的 JPA 存储库:
public interface IndexSetupRepository extends CrudRepository<IndexSetup, Integer> {
}
4)在服务器中,application.properties我添加了这些行:
# Embedded database configuration
# The embedded database file is one level above the Server folder (ie directly within the parent project)
# we use the auto server mode to be able to use the database simultaneously in the indexer and the server
spring.datasource.url=jdbc:h2:file:../myLocalDB;AUTO_SERVER=TRUE
spring.datasource.username=myName
# This parameter helped me discover that SpringBoot was not targetting the right table name.
spring.jpa.hibernate.ddl-auto=validate
5) 由于 SpringBoot 告诉我它找不到命名的表index_setup(请参阅转换为 _ 的驼峰案例),我不得不将此行添加到 application.properties :
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
6) 现在,当我得到“Entity not managed”时,我最终@EntityScan按照你们许多人的建议向 Server 主类添加了注释。
@EntityScan("my.package.Entities")
请注意,@EntityScan应该指向包含实体类的文件夹而不是实体类本身,即@EntityScan("my.package.Entities.IndexSetup")不起作用。
添加回答
举报