我有一个Jhipster单片应用程序。我删除了Liquibase,我想使用data.sql文件来插入初始数据。我创建了一个包含插入脚本的data.sql和data-h2.sql。它们位于src/main/resources
下。但似乎没有插入任何数据。
如何在启动期间使用data.sql插入数据,而不使用Liquibase?
答案 0 :(得分:0)
评论spring.datasource.type
属性并添加spring.jpa.hibernate.create-drop
属性有助于解决此问题。我认为一些jhipster配置会覆盖默认的spring-boot配置。
以下是我提出这个解决方案的方法:
在调试DataSourceInitializedPublisher.publishEventIfRequired
时,我看到以下行返回了null
引用:
private void publishEventIfRequired(EntityManagerFactory entityManagerFactory) {
DataSource dataSource = findDataSource(entityManagerFactory);
...
}
我评论了spring.datasource.type
中的application-dev.yml
属性。这样,spring自动切换到tomcat连接池。
然后,我发现DataSourceInitializedPublisher.isInitializingDatabase
必须在配置中定义spring.jpa.hibernate.hbm2ddl.auto
属性:
private boolean isInitializingDatabase(DataSource dataSource) {
...
if (hibernate.containsKey("hibernate.hbm2ddl.auto")) {
return true;
}
return false;
}
添加missing属性后,spring-boot开始执行data.sql
文件。
<强>更新强>
对于那些想要执行特定于平台的data.sql
文件的用户,例如data-h2.sql
,您还应添加以下属性:
spring.datasource.platform=h2
<强>更新强>
对于那些需要将存储在csv文件中的默认Jhipster数据转换为sql格式的人,可以参考以下要点:
https://gist.github.com/hkarakose/cf7f1b5b241dad611ba01c0211f42108