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.