Javadoc за ResultSet.getObject() изисква типът JDBC да бъде съпоставен с тип Java, както е предписано от спецификацията на JDBC (TIMESTAMP -> java.sqlTimestmp):
Този метод ще върне стойността на дадена колона като Javaобект. Типът на Java обекта ще бъде Java objecttype по подразбиране, съответстващ на SQL типа на колоната, следвайки съпоставянето на вградените типове, посочени в спецификацията на JDBC.
Както забелязахте, драйверът на Oracle по подразбиране не е съвместим със стандарта и използва oracle.sql.TIMESTAMP
вместо това (което не разширява java.sql.Timestamp
). Добрата новина е, че можете да принудите JDBC съответствие, като зададете oracle.jdbc.J2EE13Compliant системното свойство на true
по време на стартиране на vm:
java -Doracle.jdbc.J2EE13Compliant=true YourApplication
или програмно
System.getProperties().setProperty("oracle.jdbc.J2EE13Compliant", "true")
След като направите това, getResult() ще върне екземпляри на java.sql.Timestamp
, както се очаква.
За повече подробности вижте съответния раздел от Oracle JDBC Driver Documentation, който описва няколко начина за настройка на oracle.jdbc.J2EE13Compliant.