Spring Boot / Spring Data import.sql 不运行 Spring-Boot-1.0.0.RC1

2024-03-31

我一直在关注 Spring Boot 的开发,有时在初始版本之间0.0.5-BUILD-SNAPSHOT以及我当前使用的版本1.0.0.RC1我不再运行我的import.sql script.

这是我的配置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;
    }

有趣的是hibernate.hbm2ddl.auto似乎仍在运行,我认为这是我的定义的一部分SpringBootServletInitializer

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {

但是,我也注意到生成的表不再有下划线并在生成时改变了它们的形状?

然而,这可能是更新我的结果org.postgresql版本如下:

之前:

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

我也不得不改变pggetserialsequence to pg_get_serial_sequence让脚本完全运行pgadmin?

我想我对发生的事情感到困惑,但最重要的是我想回到我的状态import.sql run.

我一直在关注示例项目:https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa

还有他们的import.sql也没有运行在1.0.0-BUILD-SNAPSHOT


The import.sql我认为 script 是 Hibernate 的一个功能(不是 Spring 或 Spring Boot)。它必须在示例中运行,否则测试将失败,但无论如何,它仅在设置 ddl-auto 来创建表时运行。使用 Spring Boot 你应该确保spring.jpa.hibernate.ddl-auto设置为“create”或“create-drop”(后者是嵌入式数据库引导中的默认设置,但不适用于其他数据库,例如 postgres)。

如果你想无条件运行一个 SQL 脚本,默认情况下 Spring Boot 将运行一个独立于 Hibernate 设置的脚本(如果你将其放入)classpath:schema.sql (or classpath:schema-<platform>.sql where <platform>在你的情况下是“postgres”)。

我想你也许可以删除JpaVendorAdapter还有LocalContainerEntityManagerFactoryBean(除非你正在使用persistence.xml)并让 Boot 来控制。可以使用以下命令设置要扫描的包@EntityScan注释(Spring Boot 中的新功能)。

默认表命名方案在 Boot 1.0.0.RC1 中已更改(因此与 postgres 依赖项无关)。我不确定 RC2 中是否仍会出现这种情况,但无论如何您可以通过设置返回到旧的 Hibernate 默认值spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot / Spring Data import.sql 不运行 Spring-Boot-1.0.0.RC1 的相关文章

随机推荐