JDBC 4.1 विनिर्देश, खंड 13.6 स्वतः उत्पन्न मान प्राप्त करना कहते हैं:
<ब्लॉककोट>
यह कार्यान्वयन-परिभाषित है कि क्या getGeneratedKeys
executeBatch
. को लागू करने के बाद जेनरेट किए गए मान लौटाएगा विधि।
इसलिए आपको यह जांचना होगा कि क्या आपका ड्राइवर वास्तव में बैच अपडेट के लिए इसका समर्थन करता है। जैसा कि फिलिप ओ द्वारा उत्तर में इंगित किया गया है, उत्पन्न कुंजियों की पुनर्प्राप्ति बैच अपडेट के साथ समर्थित नहीं है जैसा कि Oracle 12 JDBC मानक समर्थन में प्रलेखित है:
<ब्लॉककोट>आप बैच अपडेट के साथ ऑटो-जेनरेटेड कुंजियों को संयोजित नहीं कर सकते।
किसी भी स्थिति में यदि यह आपके ड्राइवर द्वारा समर्थित है, तो आपके स्टेटमेंट की तैयारी को नीचे दिए गए कोड में बदलना चाहिए ताकि ड्राइवर को जेनरेट की गई चाबियों को पुनः प्राप्त करने का निर्देश दिया जा सके:
ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);
नोट:आपको अन्य जेनरेट की गई चाबियों को तैयार करने के तरीकों में से एक का उपयोग करने की आवश्यकता हो सकती है (prepareStatement(sql, columnIndexes)
या prepareStatement(sql, columnNames)
) क्योंकि Oracle ROW_ID
लौटाएगा मेरे उदाहरण में विधि के साथ।