Sejak 5.0 , Anda sekarang dapat menemukan nilai-nilai itu di khusus Enum: org.hibernate.boot.SchemaAutoTooling(ditingkatkan dengan nilaiNONE sejak 5.2).
Atau bahkan lebih baik, karena 5.1 , Anda juga dapat menggunakanorg.hibernate.tool.schema.Action Enum yang menggabungkan aksi-aksi Hibernate JPA 2 dan "legacy" DDL.
Namun , Anda belum dapat mengkonfigurasi DataSourceprogram dengan ini. Akan lebih baik untuk menggunakan ini dikombinasikan dengan org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTOtetapi kode saat ini mengharapkan Stringnilai (kutipan diambil dari SessionFactoryBuilderImpl):
this.schemaAutoTooling = SchemaAutoTooling.interpret( (String) configurationSettings.get( AvailableSettings.HBM2DDL_AUTO ) );
... dan enumnilai internal keduanya org.hibernate.boot.SchemaAutoToolingdan org.hibernate.tool.schema.Actiontidak diekspos secara publik.
Di bawah ini, contoh DataSourcekonfigurasi program (digunakan pada salah satu aplikasi Boot Musim Semi saya) yang menggunakan terima kasih gambit .name().toLowerCase()tetapi hanya berfungsi dengan nilai tanpa tanda hubung (tidak create-dropmisalnya):
@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();
}