我在 Spring Boot(版本 2.1.3.Final)应用程序中定义了多个数据源,对于其中之一,我将 hbm2ddl 设置为更新。但是,如果我第二次运行该应用程序,它总是尝试执行 CREATE TABLE 语句(而不是更改,或者在实体没有更改的情况下不执行任何语句)
数据源定义如下所示:
// @formatter:off
@EnableJpaRepositories(entityManagerFactoryRef = "triggerEMF", transactionManagerRef = "triggerTM", basePackages = {
"com.customer.trigger.repository" }, excludeFilters = @Filter(CDHRepository.class))
// @formatter:on
@Configuration
@EnableTransactionManagement
public class TriggerDSConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(TriggerDSConfig.class);
@Autowired
private Environment env;
@Primary
@Bean(name = "triggerDS")
@ConfigurationProperties("trigger.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "triggerTM")
public PlatformTransactionManager psqlTransactionManager(@Qualifier("triggerEMF") EntityManagerFactory customerEntityManagerFactory) {
return new JpaTransactionManager(customerEntityManagerFactory);
}
}
该数据源的 YAML 定义如下所示:
trigger:
datasource:
jdbcUrl: jdbc:h2:~/triggerdb2;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL
username: sa
password: sa
hbm2ddl: update
dialect: org.hibernate.dialect.H2Dialect
我可以确认DDL脚本没有被执行。hbm2ddl 失败了。我对它进行了相当深入的调试,并且已经达到了这个类: https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/tool /schema/internal/GroupedSchemaMigratorImpl.java
这是有问题的代码: https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/GroupedSchemaMigratorImpl.java #L69-L71
红颜莎娜
眼眸繁星
慕少森
相关分类