5.0'dan bu yana , artık bu değerleri özel olarak bulabilirsiniz Enum
: org.hibernate.boot.SchemaAutoTooling
(5.2'den NONE
bu yana geliştirilmiş değerle ).
Veya daha da iyisi, 5.1'den beri JPA 2 ve "eski" Hazırda Bekletme DDL işlemlerini birleştiren olanı da kullanabilirsiniz .org.hibernate.tool.schema.Action
Enum
Ancak , bununla henüz DataSource
programlı olarak yapılandıramazsınız . Bununla birlikte kullanmak daha iyi olurdu, org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTO
ancak mevcut kod bir String
değer bekliyor (alıntıdan alınmıştır SessionFactoryBuilderImpl
):
this.schemaAutoTooling = SchemaAutoTooling.interpret( (String) configurationSettings.get( AvailableSettings.HBM2DDL_AUTO ) );
... ve iç enum
hem değerleri org.hibernate.boot.SchemaAutoTooling
ve org.hibernate.tool.schema.Action
kamuya açık değildir.
Aşağıda, DataSource
sayesinde bir gambit kullanan örnek bir programlı yapılandırma (Spring Boot uygulamalarımda kullanılır), .name().toLowerCase()
ancak yalnızca tire olmayan değerlerle çalışır ( create-drop
örneğin değil ):
@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();
}