2017-07-23 1 views
1

J'ai une application monolithique Jhipster. J'ai enlevé Liquibase et je veux utiliser le fichier data.sql pour insérer les données initiales. J'ai créé un data.sql et data-h2.sql qui contiennent des scripts d'insertion. Ils sont situés sous src/main/resources. Mais aucune des données ne semble être insérée.Comment charger des données avec data.sql en utilisant JHipster et Spring Boot

Comment utiliser data.sql pour insérer des données lors du démarrage, sans utiliser Liquibase?

+0

On dirait un double de https://stackoverflow.com/questions/24508223/multiple-sql-import-files-in-spring-boot –

+0

Eh bien, ce n'est pas exactement la réponse à ma question. Je souhaite initialiser ma base de données à l'aide de Spring ('https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-initialize-a-database-using- printemps-jdbc'). A propos, l'auteur fait référence à la classe 'DataSourceInitializer' qui m'a aidé à trouver mon problème. – Halil

Répondre

0

Commentant la propriété spring.datasource.type et ajoutant la propriété spring.jpa.hibernate.create-drop a permis de résoudre ce problème. Je pense qu'une certaine configuration de jhipster remplace la configuration par défaut de spring-boot.

Voici comment je viens avec cette solution:

Lors du débogage DataSourceInitializedPublisher.publishEventIfRequired, j'ai vu que suivant la ligne retourné une référence null:

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

Je spring.datasource.type propriété a commenté application-dev.yml. De cette façon, le printemps est passé automatiquement au pool de connexion Tomcat.

Ensuite, je trouve que DataSourceInitializedPublisher.isInitializingDatabase nécessaire spring.jpa.hibernate.hbm2ddl.auto propriété à définir dans la configuration:

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

Après avoir ajouté la propriété manquante, démarrage de printemps a commencé à exécuter le fichier data.sql.

Mise à jour

Pour ceux qui veulent exécuter une plate-forme spécifique fichier data.sql, comme data-h2.sql, vous devez également ajouter la propriété suivante:

spring.datasource.platform=h2 

Mise à jour

Pour ceux qui ont besoin de convertir les données Jhipster par défaut stockées dans des fichiers CSV en format sql, vous pouvez vous référer à la liste ci-dessous:

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