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 DataSource
program dengan ini. Akan lebih baik untuk menggunakan ini dikombinasikan dengan org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTO
tetapi kode saat ini mengharapkan String
nilai (kutipan diambil dari SessionFactoryBuilderImpl
):
this.schemaAutoTooling = SchemaAutoTooling.interpret( (String) configurationSettings.get( AvailableSettings.HBM2DDL_AUTO ) );
... dan enum
nilai internal keduanya org.hibernate.boot.SchemaAutoTooling
dan org.hibernate.tool.schema.Action
tidak diekspos secara publik.
Di bawah ini, contoh DataSource
konfigurasi 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-drop
misalnya):
@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();
}