Spring Boot / Printemps importation de Données.sql ne fonctionne pas Spring-Boot-1.0.0.RC1
J'ai suivi le développement de Printemps de Démarrage, et quelque part entre la version initiale 0.0.5-BUILD-SNAPSHOT
et la version actuelle, je suis en utilisant 1.0.0.RC1
je ne suis plus en cours d'exécution de mon import.sql
script.
Voici ma configuration pour LocalContainerEntityManager
et JpaVendorAdapter
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
lef.setDataSource(dataSource);
lef.setJpaVendorAdapter(jpaVendorAdapter);
lef.setPackagesToScan("foo.*");
return lef;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
hibernateJpaVendorAdapter.setShowSql(true);
hibernateJpaVendorAdapter.setGenerateDdl(true);
hibernateJpaVendorAdapter.setDatabase(Database.POSTGRESQL);
return hibernateJpaVendorAdapter;
}
Intéressant la hibernate.hbm2ddl.auto
semble toujours courir, je pense que c'est une partie de la définition de mon SpringBootServletInitializer
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {
Cependant, j'ai aussi remarqué que les tableaux générés n'ont plus souligne et changé leur forme lors de la génération?
Cependant, qui pourrait être le résultat de la mise à jour de mon org.postgresql
version:
Précédemment:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.2-1004-jdbc41</version>
</dependency>
Maintenant:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.3-1100-jdbc41</version>
</dependency>
J'ai aussi dû changer pggetserialsequence
à pg_get_serial_sequence
pour obtenir le script à exécuter à tous à partir de pgadmin
?
Je suppose que je suis la confusion entre ce qui se passe, mais plus important, je veux revenir à mes import.sql
exécuter.
J'ai suivi l'exemple de projet: https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa
Et leur import.sql
n'est pas en cours d'exécution sur 1.0.0-BUILD-SNAPSHOT
OriginalL'auteur jordan.baucke | 2014-01-29
Vous devez vous connecter pour publier un commentaire.
La
import.sql
script est un Hibernate fonctionnalité que je pense (pas de Printemps de Printemps ou d'Amorçage). Il doit être en cours d'exécution dans l'échantillon, autrement, les tests seraient pas, mais en tout cas, il ne s'exécute que si ddl-auto est réglé pour créer les tables. Avec Spring Boot, vous devez vous assurer quespring.jpa.hibernate.ddl-auto
est réglé sur "créer" ou "create-drop" (ce dernier est par défaut au Démarrage d'une base de données intégrée, mais pas pour d'autres, par exemple, postgres).Si vous voulez inconditionnellement pour exécuter un script SQL, Par défaut Printemps Démarrage, exécutez l'une indépendante de Hibernate paramètres si vous le mettez dans
classpath:schema.sql
(ouclasspath:schema-<platform>.sql
où<platform>
est "postgres" dans votre cas).Je pense que vous pouvez sans doute supprimer le
JpaVendorAdapter
et aussi laLocalContainerEntityManagerFactoryBean
(sauf si vous utilisezpersistence.xml
) et de laisser de Démarrage prendre le contrôle. Les packages d'analyse peut être réglé à l'aide d'un@EntityScan
annotation (nouveau au Printemps de Démarrage).La valeur par défaut de la table de nommage a été changé dans le coffre de la version 1.0.0.RC1 (rien à voir donc avec votre postgres de la dépendance). Je ne suis pas sûr que ce sera toujours le cas dans la RC2, mais de toute façon, vous pouvez revenir à l'ancienne Hibernate valeurs par défaut en
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
.... et si
spring.jpa.hibernate.ddl-auto=update
, puisimport.sql
ne sera pas exécuté.OriginalL'auteur Dave Syer
Hey je suis tombé sur des questions semblables. Mon script sql n'était pas invoqué initialement. Ensuite, j'ai essayé de renommer le fichier d'importation.sql" à "schéma.sql", il a travaillé. Peut-être donner un coup de cette. Mon code peut être trouvé ici - https://github.com/sidnan/spring-batch-example
OriginalL'auteur sid
En plus de ce qui a déjà été dit, il est intéressant de noter que vous pouvez utiliser le de données.sql fichier à importer/initialiser les données dans vos tables. Il suffit de mettre votre données.sql dans la racine du classpath (par exemple: si vous utilisez un Ressort de Démarrage de l'app, vous le mettez dans le src/main/resources chemin d'accès).
Comme l'a dit avant, de l'utiliser conjointement avec la propriété ddl-auto=create-drop, afin qu'il ne tombe pas en panne en essayant d'insérer les données existantes.
Vous pouvez également configurer les fichiers spécifiques à exécuter à l'aide de la printemps.source de données.les données de la propriété. Découvrez plus d'infos ici: http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html
Note: le schéma.sql mentionné avant contient l'ensemble de la DB définition. Si vous souhaitez l'utiliser, s'assurer qu'Hibernate ne cherche pas à construire la base de données pour vous sur la base de Java Entités de votre projet. C'est ce que de la doc dit:
OriginalL'auteur RemusS