Spring Boot / Spring Data import.sql doesn't run Spring-Boot-1.0.0.RC1
spring, spring-boot, spring-data
Solution
The `import.sql` script is a Hibernate feature I think (not Spring or Spring Boot). It must be running in the sample otherwise the tests would fail, but in any case it only runs if ddl-auto is set to create the tables. With Spring Boot you should ensure that `spring.jpa.hibernate.ddl-auto` is set to "create" or "create-drop" (the latter is the default in Boot for an embedded database, but not for others, e.g. postgres).
If you want to unconditionally run a SQL script, By default Spring Boot will run one independent of Hibernate settings if you put it in `classpath:schema.sql` (or `classpath:schema-<platform>.sql` where `<platform>` is "postgres" in your case).
I think you can probably delete the `JpaVendorAdapter` and also the `LocalContainerEntityManagerFactoryBean` (unless you are using `persistence.xml`) and let Boot take control. The packages to scan can be set using an `@EntityScan` annotation (new in Spring Boot).
The default table naming scheme was changed in Boot 1.0.0.RC1 (so nothing to do with your postgres dependency). I'm not sure that will still be the case in RC2, but anyway you can go back to the old Hibernate defaults by setting `spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy`.
Problem
I've been following the development of Spring Boot, and sometime between the initial version `0.0.5-BUILD-SNAPSHOT` and the current version I am using `1.0.0.RC1` I am no longer running my `import.sql` script. Here is my configuration for `LocalContainerEntityManager` and `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; } ``` Interesting the `hibernate.hbm2ddl.auto` still seems to run, which I think is part of the definition of my `SpringBootServletInitializer` ``` @Configuration @ComponentScan @EnableAutoConfiguration public class Application extends SpringBootServletInitializer { ``` However, I also noticed that the tables generated no longer have underscores and changed their shape when generated? However, that could be the result of updating my `org.postgresql` version like so: Previously: ``` <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.2-1004-jdbc41</version> </dependency> ``` Now: ``` <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.3-1100-jdbc41</version> </dependency> ``` I also had to change `pggetserialsequence` to `pg_get_serial_sequence` to get the script to run at all from `pgadmin`? I guess I'm confusing what's going on, but most importantly I want to get back to having my `import.sql` run. I have been following the sample project: https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa And their `import.sql` isn't running either on `1.0.0-BUILD-SNAPSHOT`