Начиная с 5.0 , теперь вы можете найти эти значения в выделенном Enum
: org.hibernate.boot.SchemaAutoTooling
(улучшено со значением NONE
с 5.2).
Или даже лучше, начиная с версии 5.1 , вы также можете использовать тот, который сочетает в себе JPA 2 и «устаревшие» действия Hibernate DDL.org.hibernate.tool.schema.Action
Enum
Но вы еще не можете настроить DataSource
программно с этим. Было бы лучше использовать это в сочетании с, org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTO
но текущий код ожидает String
значение (отрывок взят из SessionFactoryBuilderImpl
):
this.schemaAutoTooling = SchemaAutoTooling.interpret( (String) configurationSettings.get( AvailableSettings.HBM2DDL_AUTO ) );
... и внутренние enum
ценности того и другого org.hibernate.boot.SchemaAutoTooling
и org.hibernate.tool.schema.Action
не раскрываются публично.
Ниже приведен пример программной DataSource
конфигурации (используемой в моих приложениях Spring Boot), в которой используется гамбит, .name().toLowerCase()
но он работает только со значениями без черты (не create-drop
для примера):
@Bean(name = ENTITY_MANAGER_NAME)
public LocalContainerEntityManagerFactoryBean internalEntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier(DATA_SOURCE_NAME) DataSource internalDataSource) {
Map<String, Object> properties = new HashMap<>();
properties.put(AvailableSettings.HBM2DDL_AUTO, SchemaAutoTooling.CREATE.name().toLowerCase());
properties.put(AvailableSettings.DIALECT, H2Dialect.class.getName());
return builder
.dataSource(internalDataSource)
.packages(JpaModelsScanEntry.class, Jsr310JpaConverters.class)
.persistenceUnit(PERSISTENCE_UNIT_NAME)
.properties(properties)
.build();
}