gpt4 book ai didi

hibernate - Spring Boot 中的多个 SQL 导入文件

转载 作者:行者123 更新时间:2023-12-03 07:34:44 26 4
gpt4 key购买 nike

按照 Spring Boot reference manual 进行操作,我们可以通过多种方式在应用程序启动时导入数据。与内存数据库相结合,这对于测试来说相当方便。

选项是创建一个名为 import.sql 的文件,该文件将由 Hibernate 获取,或者创建一个名为 data.sql 的文件,该文件将由 Hibernate 获取。由 Spring JDBC 拾取。这两个对我来说都很好用。

但是,我喜欢稍微分解我的项目,所以我目前有一个核心域模型,其中有一些方便的导入来配置核心数据,例如一些用户,这些数据随处可见。我还有特定于功能的项目,在这些项目中,重复使用相同的基础数据导入非常有用,而且还导入一些特定于该功能的附加数据。

这就是事情不太顺利的地方。

我找到了an answer to a previous question ,其中 Pascal Thivent 提到 hibernate.hbm2ddl.import_files 属性可用于定义文件列表,从 Hibernate 3.6.0.Beta1 开始。鉴于我的项目正在导入 4.3.1.Final,我想也许这个是可用的。

所以我尝试将以下内容添加到我的 Spring Boot application.properties 中:

spring.jpa.hibernate.hbm2ddl.import_files=/another-import.sql

和:

hibernate.hbm2ddl.import_files=/another-import.sql

不幸的是,这些都不会导致导入运行。

所以我想知道我是否只是把上面的属性弄乱了(很可能)。或者还有什么我需要做的吗?

请注意,作为一种解决方法,我发现 Spring JDBC 似乎在 Hibernate 运行 import.sql 之后运行 data.sql。因此,只要我不需要两次以上的导入,我就可以使用 import.sql 作为基础数据,然后将特定于项目的导入放入 data.sql.我可以解决这个问题,但这并不是一个真正的解决方案。

最佳答案

如果您确实想使用 hibernate 属性,请在其前面添加 spring.jpa.properties. 前缀,因为这些属性会按原样作为属性添加到 EntityManagerFactory 中。请参阅here在 Spring Boot 引用指南中。

spring.jpa.properties.hibernate.hbm2ddl.import_files=file1.sql,file2.sql

但是,您也可以使用 spring.datasource.dataspring.datasource.schema 属性来发挥您的优势。它们默认分别为dataschema。正如您在 DataSourceInitializer 中看到的那样类(class)。您还可以设置它们,它们采用逗号分隔的资源列表。

spring.datasource.data=classpath:/data-domain.sql,file:/c:/sql/data-reference.sql,data-complex.sql

它变得更好,因为资源加载还允许使用 ant-style patterns 加载资源.

spring.datasource.data=/META-INF/sql/init-*.sql
spring.datasource.schema=/META-INF/sql/schema-*.sql

关于hibernate - Spring Boot 中的多个 SQL 导入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com