如何使用JHipster和Spring Boot使用data.sql加载数据

时间:2017-07-23 15:17:31

标签: spring-boot jhipster

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

如何在启动期间使用data.sql插入数据,而不使用Liquibase?

1 个答案:

答案 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