Kể từ 5.0 , giờ đây bạn có thể tìm thấy các giá trị đó một cách chuyên dụng Enum: org.hibernate.boot.SchemaAutoTooling(được nâng cao với giá trị NONEkể từ 5.2).
Hoặc thậm chí tốt hơn, kể từ 5.1 , bạn cũng có thể sử dụng kết hợp các hành động DDL Hibernate "kế thừa".org.hibernate.tool.schema.Action Enum
Nhưng , bạn chưa thể cấu hình một DataSourcechương trình với điều này. Nó sẽ tốt hơn để sử dụng kết hợp với org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTOnhưng mã hiện tại mong đợi một Stringgiá trị (trích từ SessionFactoryBuilderImpl):
this.schemaAutoTooling = SchemaAutoTooling.interpret( (String) configurationSettings.get( AvailableSettings.HBM2DDL_AUTO ) );
enumGiá trị và nội bộ của cả hai org.hibernate.boot.SchemaAutoToolingvà org.hibernate.tool.schema.Actionkhông được công khai.
Dưới đây, một DataSourcecấu hình lập trình mẫu (được sử dụng trong các ứng dụng Spring Boot của tôi) sử dụng một gambit nhờ .name().toLowerCase()nhưng nó chỉ hoạt động với các giá trị không có dấu gạch ngang (không phải create-dropví dụ):
@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();
}