से तालिका क्वेरी बनाना मेरे पास एक बहुत ही प्रयुक्त प्रोजेक्ट है जिसे मैं वर्तमान में अपडेट करने पर काम कर रहा हूं। ऐसे कई स्थान हैं जहां इस परियोजना को स्थापित किया जा सकता है, और भविष्य में यह निश्चित नहीं है कि किस संस्करण का उपयोग किया जाता है और भविष्य में किस संस्करण को अपडेट किया जा सकता है। अभी वे सभी समान हैं, हालांकि।एचएसक्यूएल बनाना कक्षा
मेरी समस्या इस तथ्य से उत्पन्न होती है कि हाइबरनेट इकाई वर्गों में कई बदलाव हो सकते हैं, और किसी भी परेशानी के बिना किसी नए संस्करण में अपडेट करना आसान होना चाहिए, और डेटाबेस सामग्री का कोई नुकसान नहीं होना चाहिए। बस WAR को प्रतिस्थापित करें और शुरू करें और इसे स्वयं माइग्रेट करना चाहिए।
मेरे ज्ञान के लिए हाइबरनेट तालिकाओं में कोई बदलाव नहीं करता है जब तक hibernate.hbm2ddl.auto = बनाएं, लेकिन वास्तव में सभी डेटा को फेंक देता है?
तो अभी जब वसंत संदर्भ पूरी तरह से लोड हो गया है, तो यह एक बीन निष्पादित करता है जो डेटाबेस संस्करण से संस्करण संस्करण में सभी परिवर्तनों के माध्यम से डेटाबेस को माइग्रेट करेगा (यह संस्करण जो पहले डेटाबेस में सहेजा गया था) , और तालिका को मैन्युअल रूप से बदलें।
यह बहुत परेशानी कुछ स्तंभ जोड़ने के लिए कुछ हार्ड-कोडेड ALTER तालिका कर नहीं है, लेकिन जब यह पूरा नया टेबल जोड़ने की बात आती है, यह सब है कि लिखने के लिए है करने के लिए मूर्खतापूर्ण लगता है ...
तो मेरी
वहाँ किसी भी तरह से कहीं कोड हाइबरनेट, और एक मेज बनाने के लिए एक वैध SQL क्वेरी वापस पाने के लिए एक इकाई वर्ग और एक बोली भेजने के लिए है: प्रश्न (रों) इस है?
और इससे भी बेहतर, किसी भी तरह से किसी तालिका में कॉलम जोड़ने के लिए SQL स्ट्रिंग बनाएं, बोली-सुरक्षित?
मुझे आशा है कि यह एक मूर्खतापूर्ण सवाल नहीं है, और मैं कुछ स्पष्ट याद नहीं है जब यह हाइबरनेट की बात आती है ...
ठीक है, मैं इसके लिए बेहतर जवाब के लिए बस गया। मेरे पास अभी भी निर्भरता के रूप में खुद को तरल पदार्थ के लिए आरक्षण है या मेरी स्प्रिंग + हाइबरनेट + एनोटेशन को फिट करने के लिए आरक्षण है, लेकिन यह हार्डकोडेड एसक्यूएल प्रश्नों का निर्माण करने के लिए एक महान काम करता है जिसे मैं अपने स्वयं के, कस्टम समाधान के लिए उपयोग कर सकता हूं। धन्यवाद। – Stmated
दीपेश से इस उत्तर की जांच करें: http://stackoverflow.com/a/12259980/433789 – sdouglass
हाइबरनेट को अपने स्वयं के ऑटो-अपडेट को सरल मामलों में अच्छी तरह से काम करना जैसे नए नलबल कॉलम जोड़ना, लेकिन यह अधिक जटिल से निपट नहीं सकता कॉलम का नाम बदलने या हटाने, प्रकार बदलने आदि जैसे प्रवासन की कल्पना करें। ऐसी स्थिति की कल्पना करें जहां आप एक नया कॉलम जोड़ रहे हैं जिसका मूल्य मौजूदा कॉलम में मानों के आधार पर गणना की आवश्यकता है (केवल मौजूदा डिफ़ॉल्ट पंक्तियों के लिए काम करने वाले स्थिर डिफ़ॉल्ट होने के बजाय)। –