5.0 के बाद से , अब आप उन मूल्यों को एक समर्पित में पा सकते हैं Enum: org.hibernate.boot.SchemaAutoTooling( NONE5.2 से मूल्य के साथ बढ़ाया गया )।
या इससे भी बेहतर, 5.1 के बाद , आप जेपीए 2 और "लीगेसी" हाइबरनेट डीडीएल कार्यों को जोड़ती है , जो भी उपयोग कर सकते हैं ।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कॉन्फ़िगरेशन (मेरे स्प्रिंग बूट अनुप्रयोगों में से एक में प्रयुक्त) जो एक धन्यवाद का उपयोग .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();
}