Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

java.lang.ClassCastException:oracle.sql.TIMESTAMP को java.sql.Timestamp में नहीं डाला जा सकता है

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 को सेट करने के कई तरीकों का वर्णन करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आरएसी अनुक्रम विवाद

  2. Oracle में दृश्य और भौतिकीकृत दृश्य में क्या अंतर है?

  3. Oracle में कैलेंडर तालिका कैसे पॉप्युलेट करें?

  4. स्प्रिंग JDBC समर्थन और बड़े डेटासेट

  5. Oracle में डेटाटाइम प्रारूप तत्वों की सूची