我正在开发SpringBoot2应用程序,并尝试通过配置hikari数据源和SpringJPA与PostgreSQL数据库建立连接。
我在这方面很成功,我正在使用
hibernate.hbm2ddl.auto
作为
update
因此,它正在创建表(如果不存在),但唯一的问题是,它在模式不存在时引发异常
误差
GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement
Caused by: org.postgresql.util.PSQLException: ERROR: schema "test_schema" does not exist
我通过config类手动配置了所有内容
配置类
@Bean
@Primary
public HikariDataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(databaseUrl);
config.setUsername(username);
config.setPassword(password);
config.setDriverClassName(driverClassName);
config.setConnectionTimeout(connectionTimeout);
config.setIdleTimeout(idleTimeout);
config.setMaximumPoolSize(maxpoolSize);
config.setMaxLifetime(maxLifeTime);
config.setMinimumIdle(minIdleConnections);
//config.setPoolName(poolName);
return new HikariDataSource(config);
}
@Bean
public Properties additionalProps() {
Properties jpaProps = new Properties();
jpaProps.put(hbDialect, "org.hibernate.dialect.PostgreSQLDialect");
jpaProps.put(autoDDL, "update");
jpaProps.put(showSql, true);
jpaProps.put(formatSql, true);
return jpaProps;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setDataSource(dataSource());
factory.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
factory.setPackagesToScan("com.target.storetaskcount.entity");
factory.setJpaProperties(additionalProps());
return factory;
}
@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory factory) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
如果不存在,如何创建模式?
我在这里看到了一个类似的问题,尝试了所有的方法。到目前为止还没有运气。
similar-question
(我不想使用Flyway DB)
这是文件
hibernate-doc
,但不清楚如何添加此属性以创建架构
javax.persistence.schema-generation.database.action