Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

java.lang.ClassCastException:oracle.sql.TIMESTAMP không thể truyền sang java.sql.Timestamp

Javadoc cho ResultSet.getObject () yêu cầu loại JDBC phải được ánh xạ tới một loại Java theo quy định của đặc tả JDBC (TIMESTAMP -> java.sqlTimestmp):

Phương thức này sẽ trả về giá trị của cột đã cho dưới dạng một Javaobject. Kiểu của đối tượng Java sẽ là kiểu đối tượng Java mặc định tương ứng với kiểu SQL của cột, tuân theo ánh xạ các kiểu dựng sẵn được chỉ định trong đặc tả JDBC.

Như bạn đã nhận thấy, trình điều khiển Oracle theo mặc định không tuân thủ tiêu chuẩn và sử dụng oracle.sql.TIMESTAMP thay vào đó (không mở rộng java.sql.Timestamp ). Tin tốt là bạn có thể buộc tuân thủ JDBC bằng cách đặt oracle.jdbc.J2EE13Compliant thuộc tính hệ thống thành true trong khi khởi động vm:

java -Doracle.jdbc.J2EE13Compliant=true YourApplication

hoặc theo chương trình

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

Khi bạn thực hiện việc này, getResult () sẽ trả về các bản sao của java.sql.Timestamp , như mong đợi.

Để biết thêm chi tiết, hãy xem phần liên quan từ Tài liệu Trình điều khiển Oracle JDBC, phần này mô tả một số cách thiết lập 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. Oracle SQL:Hiểu hoạt động của SYS_GUID () khi hiển thị trong dạng xem nội tuyến?

  2. Hỏi ý kiến:Một trình tự cho tất cả các bảng

  3. Có chức năng nào trong oracle tương tự như group_concat trong mysql không?

  4. Phát hiện xem một giá trị có chứa ít nhất một chữ số trong Oracle hay không

  5. Sự khác biệt giữa VARCHAR2 (10 CHAR) và NVARCHAR2 (10)