ResultSet.getObject() के लिए जावाडोक अनिवार्य है कि जेडीबीसी प्रकार को जेडीबीसी स्पेक द्वारा निर्धारित जावा प्रकार में मैप किया जाना चाहिए (टाइमस्टैम्प -> java.sqlTimestmp):
<ब्लॉकक्वॉट>यह विधि दिए गए कॉलम के मान को Javaobject के रूप में वापस कर देगी। JDBC विनिर्देश में निर्दिष्ट अंतर्निहित प्रकारों के लिए मैपिंग के बाद, Java ऑब्जेक्ट का प्रकार कॉलम के SQL प्रकार के अनुरूप डिफ़ॉल्ट Java ऑब्जेक्ट प्रकार होगा।
जैसा कि आपने देखा है, Oracle ड्राइवर डिफ़ॉल्ट रूप से मानक के अनुरूप नहीं है और oracle.sql.TIMESTAMP
. का उपयोग करता है इसके बजाय (जो java.sql.Timestamp
. का विस्तार नहीं करता है ) अच्छी खबर यह है कि आप oracle.jdbc.J2EE13Compliant सेट करके JDBC अनुपालन के लिए बाध्य कर सकते हैं सिस्टम गुण true
वीएम स्टार्टअप के दौरान:
java -Doracle.jdbc.J2EE13Compliant=true YourApplication
या प्रोग्रामेटिक रूप से
System.getProperties().setProperty("oracle.jdbc.J2EE13Compliant", "true")
एक बार ऐसा करने के बाद, getResult() java.sql.Timestamp
के उदाहरण लौटाएगा , जैसा कि अपेक्षित था।
अधिक जानकारी के लिए Oracle JDBC ड्राइवर दस्तावेज़ीकरण से संबंधित अनुभाग देखें, जो oracle.jdbc.J2EE13Compliant को सेट करने के कई तरीकों का वर्णन करता है।