2012-10-05 7 views
12

में एचक्यूएल का उपयोग करके एक तालिका में डेटा डालने से मैं हाइबरनेट एचक्यूएल ट्यूटोरियल पढ़ रहा था और पाया कि एचक्यूएल INSERT INTO..VALUES.. का समर्थन नहीं करता है लेकिन INSERT INTO..SELECT.. यानी एचक्यूएल केवल किसी अन्य तालिका से सम्मिलित करने का समर्थन करता है।हाइबरनेट

मान लीजिए कि मैं एक ही मान में एक ही मान डालना चाहता हूं और वह डेटा किसी अन्य तालिका से नहीं है यानी मान किसी अन्य तालिका में नहीं हैं। तो मैं इसे एचक्यूएल में कैसे कर सकता हूं?

भी, एचक्यूएल में ऐसे प्रतिबंधों के पीछे तर्कसंगत जानना चाहते हैं?

+0

समझ में नहीं आता कि इस प्रश्न को किसने कम किया? जो भी करता है, कृपया मुझे कारण बताएं ताकि मैं भविष्य में देखभाल कर सकूं – Anand

+0

मैं डाउनवॉटर नहीं हूं, लेकिन मुझे लगता है कि आपको इसे पढ़ना चाहिए: http://stackoverflow.com/faq#dontask – user1516873

उत्तर

7

डेटा किसी अन्य तालिका से है या नहीं, तो आपको एचक्यूएल का उपयोग करने की आवश्यकता नहीं है।

बस अपनी इकाई का संदर्भ प्राप्त करें, एक हाइबरनेट सत्र पकड़ लें और कॉल सेव() को कॉल करें।

http://docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/ch04.html#d0e2116

सम्मिलित बयान

INSERT INTO EntityName properties_list select_statement

के लिए छद्म वाक्य रचना के अनुसार

केवल INSERT INTO ... का चयन करें ... रूप है समर्थित। आप सम्मिलित करने के लिए स्पष्ट मान निर्दिष्ट नहीं कर सकते हैं।

+2

मैं पूछ रहा हूं कि मैं एचक्यूएल में किसी तालिका में डेटा कैसे डाल सकता हूं। नोट: डालने वाला डेटा किसी अन्य तालिका से नहीं है। – Anand

+0

मैंने डालने के लिए हाइबरनेट दस्तावेज जोड़ा। – swemon

+0

इसे स्पष्ट करने के लिए धन्यवाद – Anand

3

हाइबरनेट एक ओआरएम ढांचा (ऑब्जेक्ट-रिलेशनल मैपिंग) है।

इसका काम यह है कि आप ऑब्जेक्ट्स (संस्थाएं) देते हैं और वह भंडारण का प्रबंधन करता है (Session.save(), आईआईआरसी के माध्यम से)।

तो, आप नए रिकॉर्ड डालने के लिए एचक्यूएल का उपयोग नहीं करते हैं, लेकिन ओआरएम विधियों का उपयोग करते हैं।

और (यह एक अनुमान है) दूसरी तरफ, एक मेज से इकाइयों को लोड करने के बाद, उन्हें अन्य इकाइयों में कॉपी करना और उन्हें एक-एक करके स्टोर करना धीमा है, एचक्यूएल सिर्फ डीबी में एसक्यूएल को शॉर्टकट प्रदान करता है प्रदर्शन उद्देश्यों के लिए विशिष्ट संचालन।

+0

मुझे सत्र का उपयोग करना पता है। सहेजें() मैं वही कर सकता हूं लेकिन सिर्फ यह जानना चाहता हूं कि मैं एचक्यूएल का उपयोग कर तालिका में डेटा (किसी अन्य तालिका से नहीं) कैसे डाल सकता हूं। – Anand

+1

ढांचे का प्रदाता कहता है कि आप ऐसा नहीं कर सकते हैं। आप एक विकल्प जानते हैं, और इसके लिए एक तर्क दिया गया है। फिर भी आप बस इतना कहें कि आप इसे इस तरह से करना चाहते हैं ... कम से कम, हम भाग्यशाली हैं कि आप एक प्रोग्रामर हैं, न कि एक हवाई जहाज पायलट। यदि आप केवल SQL का उपयोग करना चाहते हैं, तो SQL का उपयोग करें और हाइबरनेट नहीं। – SJuan76

+0

मैंने कभी नहीं कहा कि मैं ऐसा करना चाहता हूं, मैं सिर्फ यह पूछ रहा हूं कि हम ऐसा कर सकते हैं या नहीं .. मुझे उम्मीद है कि आप अंतर समझेंगे .. – Anand

1

आप तालिका में डेटा डालने के लिए session.save(object) का उपयोग कर सकते हैं।