2010-03-11 6 views
10

मैं JDBC उपयोग कर रहा हूँ और बैच सम्मिलित करना चाहते हैं, लेकिन मैं आवेषण के अगले दौर के लिए उत्पन्न कुंजी की जरूरत है - है वहाँ वैसे भी यह पूरा करने के?स्प्रिंग JDBC batchUpdate का उपयोग करते समय उत्पन्न कुंजी प्राप्त करने के लिए वैसे भी वहाँ है?

MapSqlParameterSource[] batchArgs ....

DAL.getNamedParameterTemplate().batchUpdate("INSERT INTO...", batchArgs);

धन्यवाद

+0

मुझे आपका प्रश्न मिला क्योंकि मैं वही काम करने के लिए देख रहा हूं, लेकिन स्प्रिंग बैचअपडेट एक बैचपेरेडस्टेटमेंटसेटर लेता है और मैं यह नहीं समझ सकता कि जेनरेट की गई कुंजी को कैसे वापस लाया जाए। किसी भी तरह आप स्वयं इस वसंत jdbcTemplate कार्यों के साथ JDBC addBatch कार्यप्रणाली की सहायता का उपयोग कर क्या करना है, तो मैं सोच रहा हूँ। क्या आपको अपने प्रश्न का उत्तर मिला? – titania424

उत्तर

0

उपयोग db sequences अगले प्राथमिक कुंजी मूल्य हड़पने और डालने बयान में इसका इस्तेमाल करने की।

+1

मैं वसंत के साथ इसका उपयोग कैसे कर सकता हूं? – MalcomTucker

+0

इन पंक्तियों के साथ कुछ: अगली पैरामीटर KeyValue –

+0

में seq.nextval का चयन करें यह दृष्टिकोण परमाणु नहीं है जब तक आप एक लेनदेन में पूरी चीज नहीं करते हैं (जिसे संपूर्ण तालिका को लॉक करना होगा, आदर्श समाधान के करीब भी नहीं)। मुझे लगता है कि क्या MalcomTucker पूछ रहा है आप वसंत अद्यतन() एपीआई से एक के लिए keyholder गुजर तरह यह कर सकते हैं कि क्या है या नहीं है। –

7

स्प्रिंग ढांचे लोगों इस समस्या का attempted a solution। लेकिन उन्होंने यह प्रयास छोड़ दिया जब यह स्पष्ट हो गया कि गारंटी देने का कोई तरीका नहीं है कि समाधान सभी जेडीबीसी ड्राइवर्स के साथ काम करेगा। ऐसा इसलिए है क्योंकि जेडीबीसी स्पेक गारंटी नहीं देता है कि बैच अपडेट के बाद जेनरेट की गई कुंजी उपलब्ध कराई जाएगी। जेडीबीसी ड्राइवर इस सुविधा को लागू करने के लिए स्वतंत्र हैं क्योंकि वे फिट देखते हैं। कुछ मामलों में अंतर्निहित डेटाबेस जेनरेट की गई कुंजी को वापस नहीं लौटा सकता है जिससे ड्राइवर इस सुविधा का समर्थन करने के लिए असंभव बना देता है।

तो भले ही आप सीधे JDBC के साथ काम कर रहे हैं, तो आप कि क्या आपके डेटाबेस और JDBC ड्राइवर उत्पन्न कुंजी उपलब्ध बनाता जाँच करने के लिए की आवश्यकता होगी।

मुझे याद है कि मैं इसे कुछ प्रयासों के साथ MySQL 5.0 जेडीबीसी ड्राइवर के साथ प्राप्त करने में सक्षम था लेकिन हमारे उत्पादन अनुप्रयोग में समाधान को कभी भी एकीकृत नहीं किया क्योंकि हमें MySQL के पुराने संस्करणों का भी समर्थन करना था।

संबंधित मुद्दे

 संबंधित मुद्दे