हाइबरनेट: hbm2ddl द्वारा उल्लिखित कॉलम ऑर्डर - हाइबरनेट, ऑर्डर, एचबीएम 2ddl

मैं hbm2ddl को मेरे लिए (देव उद्देश्यों के लिए) टेबल बनाने देता हूं, और कॉलम कक्षा में फ़ील्ड के रिवर्स ऑर्डर में हैं।

मैं उसी तरह से कॉलम बना सकता हूं जिस तरह से क्लास में है?

मुझे लगता है कि जावा कक्षाएं खेतों के क्रम को संग्रहीत नहीं करती हैं, इसलिए हाइबरनेट को बस यह नहीं पता है कि स्रोत में आदेश क्या है (जो कि अधिक जटिल मामलों के बारे में सोचने पर तार्किक लगता है)।

लेकिन, क्या मैं कम से कम हाइबरनेट को पहले वाले के रूप में पीके और एफके कॉलम लगाने के लिए कह सकता हूं?

हाइबरनेट 4.0.0 (7.1.2 के रूप में JBoss) MySQL 5.1.x

उत्तर:

उत्तर № 1 के लिए 7

हाइबरनेट टीम का कहना है कि यह एक है ज्ञात सीमा और यह आदेश सेट करने के लिए असंभव है। लेकिन आपको उत्पादन में हाइबरनेट का उपयोग करते समय hbm2ddl पर भरोसा नहीं करना चाहिए, यह बहुत ही सीमित चीज है, उदाहरण के लिए यह कॉलम जोड़ सकता है, लेकिन इसे "नहीं" हटा सकता है। इसके बजाय लोग आमतौर पर टूल जैसे DB माइग्रेशन बनाते हैं। LiquiBase या हवाई रास्ता या DbDeploy, यह आपको स्कीमा अपडेट पर अधिक लचीलापन और नियंत्रण प्रदान करता है।

यह वर्णन करने के लिए कि यह दृष्टिकोण कैसे मदद करता है: मान लें कि आपके पास एक UAT वातावरण है और आपने अभी-अभी स्कीमा को अपडेट किया है - आप मौजूदा कॉलम में नहीं-नाल की कमी जोड़ना चाहते थे। hbm2ddl के साथ यह संभव नहीं है और आप अपने क्यूए को खरोंच से डेटाबेस को फिर से बनाने के लिए बाध्य करेंगे। आपके ऊपर वर्णित उपकरणों का उपयोग करके "आपको एसक्यूएल फ़ाइल जोड़ने की आवश्यकता होगी और वे उपकरण इस नई स्क्रिप्ट को चलाएंगे जो क्रमशः स्कीमा को अद्यतन करता है।" आप hbm2ddl को भी सेट करना चाह सकते हैं = सत्यापित करें ताकि आप सुनिश्चित करें कि वर्तमान DB स्कीमा अप-टू-डेट है या इसके विपरीत - हाइबरनेट मैपिंग सही है।