Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

java.lang.ClassCastException:Oracle.sql.TIMESTAMP tidak dapat dilemparkan ke java.sql.Timestamp

Javadoc untuk ResultSet.getObject() mengamanatkan bahwa tipe JDBC harus dipetakan ke tipe Java seperti yang ditentukan oleh spesifikasi JDBC (TIMESTAMP -> java.sqlTimestmp):

Metode ini akan mengembalikan nilai kolom yang diberikan sebagai objek Java. Tipe objek Java akan menjadi tipe objek Java default yang sesuai dengan tipe SQL kolom, mengikuti pemetaan untuk tipe bawaan yang ditentukan dalam spesifikasi JDBC.

Seperti yang Anda perhatikan, driver Oracle secara default tidak sesuai dengan standar dan menggunakan oracle.sql.TIMESTAMP sebagai gantinya (yang tidak memperpanjang java.sql.Timestamp ). Kabar baiknya adalah Anda dapat memaksa kepatuhan JDBC dengan menyetel Oracle.jdbc.J2EE13Compliant properti sistem menjadi true saat memulai vm:

java -Doracle.jdbc.J2EE13Compliant=true YourApplication

atau secara terprogram

System.getProperties().setProperty("oracle.jdbc.J2EE13Compliant", "true")

Setelah Anda melakukannya, getResult() akan mengembalikan instance java.sql.Timestamp , seperti yang diharapkan.

Untuk lebih jelasnya lihat bagian yang relevan dari Oracle JDBC Driver Documentation, yang menjelaskan beberapa cara pengaturan 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. Bagaimana cara mengetahui id sebelum menyimpan objek di jpa

  2. Bagaimana saya bisa meneruskan parameter ke skrip t-sql?

  3. Bagaimana Mengenkripsi Kata Sandi di Oracle?

  4. Cari tahu ruang kosong di tablespace

  5. CONCAT() Fungsi di Oracle