Я работаю над приложением spring boot 2 и пытаюсь установить соединение с базой данных postgresql с настройкой источника данных hikari и Spring Jpa.
Я добился успеха в этом, и я использую hibernate.hbm2ddl.auto
как update
, поэтому он создает таблицу, если не существует, но единственная проблема в том, что он выдает исключение, когда схема не существует
Error
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;
}
Как бы я сделал это, чтобы создать схему, если она не существует?
Я видел подобный вопрос здесь и попробовал все безуспешно Аналогичный вопрос (я не хочу использовать flyway db)
Вот документация hibernate-doc , но не ясно, как добавить это свойство для создания схемы javax.persistence.schema-generation.database.action