java - 如果我将数据源从 `H2` 切换到 `postgresql`,`hibernate.hbm2ddl.import_files` 属性将停止工作
问题描述
这是我的 Spring Boot 应用程序的配置:
@Configuration
@EnableJpaAuditing
public class Cfg {
@Bean(destroyMethod = "close")
public DataSource myDataSource() {
org.apache.tomcat.jdbc.pool.DataSource o = new org.apache.tomcat.jdbc.pool.DataSource();
o.setDriverClassName("org.h2.Driver");
o.setUrl("jdbc:h2:mem:test");
return o;
}
@Bean("entityManagerFactory")
public LocalSessionFactoryBean sessionFactory(DataSource myDataSource) {
LocalSessionFactoryBean o = new LocalSessionFactoryBean();
o.setDataSource(myDataSource);
o.setPackagesToScan("fctorial.crossover.entities");
Properties props = new Properties();
props.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
props.setProperty("hibernate.show_sql", "true");
props.setProperty("hibernate.format_sql", "true");
props.setProperty("hibernate.hbm2ddl.auto", "none");
props.setProperty("hibernate.hbm2ddl.import_files", "classpath:/schema.sql,classpath:/data.sql");
o.setHibernateProperties(props);
return o;
}
}
它按预期工作,但由于某种原因,如果我将数据库更改为 postgresql(通过以下补丁),import_files
则不再执行。
@@ -17,8 +17,10 @@
@Bean(destroyMethod = "close")
public DataSource myDataSource() {
org.apache.tomcat.jdbc.pool.DataSource o = new org.apache.tomcat.jdbc.pool.DataSource();
- o.setDriverClassName("org.h2.Driver");
- o.setUrl("jdbc:h2:mem:test");
+ o.setDriverClassName("org.postgresql.Driver");
+ o.setUsername("saga");
+ o.setPassword("");
+ o.setUrl("jdbc:postgresql://localhost:5432/postgres");
return o;
}
@@ -28,7 +30,7 @@
o.setDataSource(myDataSource);
o.setPackagesToScan("fctorial.crossover.entities");
Properties props = new Properties();
- props.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
+ props.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
props.setProperty("hibernate.show_sql", "true");
props.setProperty("hibernate.format_sql", "true");
props.setProperty("hibernate.hbm2ddl.auto", "none");
我在顶部有这个schema.sql
:
NOT A VALID SQL STATEMENT;
应用程序版本在h2
启动时抛出错误,但postgresql
版本在启动时没有错误,并且在运行时出现故障,因为数据库未正确初始化。
注意:此代码库是演示此问题的完整示例:https ://github.com/fctorial/crud
解决方案
也许这个答案可以帮助你hibernate.hbm2ddl.import_files: Path to the files
这些文件仅在创建模式时使用
推荐阅读
- angular - 链接 Observables 创建嵌套的 observable
- optimization - 加快 Kotlin 中大型列表的过滤器
- python - 将类似的字符串附加到文件中
- java - java 复杂的正则表达式在 String.matches() 中不起作用
- python - 我该如何解决这个问题?IndexError:列表索引超出范围
- ios - 如何根据Swift3 iOS中的键值按升序获取数组
- android - 使用 Google Play 进行身份验证的问题
- ios - 将 Facebook SDK 与 Xcode Swift 项目集成 - AppDelegate 错误?
- php - woocommerce rest api - 未显示产品列表
- three.js - BoxGeometry 段