【发布时间】:2019-06-17 14:09:54
【问题描述】:
我正在开发 spring boot 2 应用程序并尝试通过配置 hikari 数据源和 spring Jpa 来建立与 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
我通过配置类手动配置了所有内容
配置类
@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
【问题讨论】:
标签: java postgresql hibernate spring-boot spring-data-jpa