2017-07-23 53 views
1

我有一个Jhipster单片应用程序。我删除了Liquibase,我想使用data.sql文件来插入初始数据。我创建了一个包含插入脚本的data.sql和data-h2.sql。他们位于src/main/resources。但似乎没有插入任何数据。如何使用JHipster和Spring Boot加载数据data.sql

如何在不使用Liquibase的情况下使用data.sql在启动过程中插入数据?

+0

貌似https://stackoverflow.com/questions/24508223/multiple-sql-import-files-in-spring-boot –

+0

的副本嗯,这是不完全的答案,我题。我想用Spring初始化我的数据库('https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-initialize-a-database-using-弹簧jdbc')。 顺便说一下,作者引用了'DataSourceInitializer'类,它帮助我发现了我的问题。 – Halil

回答

0

评论spring.datasource.type属性和添加spring.jpa.hibernate.create-drop属性帮助解决此问题。我认为一些jhipster配置会覆盖默认的spring-boot配置。

这里是我想出了这个解决方案:

在调试DataSourceInitializedPublisher.publishEventIfRequired,我看到下面的行返回null参考:

private void publishEventIfRequired(EntityManagerFactory entityManagerFactory) { 
    DataSource dataSource = findDataSource(entityManagerFactory); 
    ... 
} 

application-dev.yml评论spring.datasource.type财产。这样,spring自动切换到tomcat连接池。

然后,我发现DataSourceInitializedPublisher.isInitializingDatabase需要spring.jpa.hibernate.hbm2ddl.auto属性在配置上进行定义:

private boolean isInitializingDatabase(DataSource dataSource) { 
    ... 
    if (hibernate.containsKey("hibernate.hbm2ddl.auto")) { 
     return true; 
    } 
    return false; 
} 

添加缺少的属性后,弹簧启动开始执行data.sql文件。

更新

对于那些谁想要执行特定于平台的data.sql文件,如data-h2.sql,你还应该添加以下属性:

spring.datasource.platform=h2 

更新

对于那些需要将存储在csv文件中的默认Jhipster数据转换为sql格式,您可以参考以下要点:

https://gist.github.com/hkarakose/cf7f1b5b241dad611ba01c0211f42108

相关问题