Javadoc pro ResultSet.getObject() nařizuje, že typ JDBC by měl být mapován na typ Java, jak je předepsáno specifikací JDBC (TIMESTAMP -> java.sqlTimestmp):
Tato metoda vrátí hodnotu daného sloupce jako Javaobject. Typ objektu Java bude výchozí typ objektu Java odpovídající typu SQL ve sloupci podle předdefinovaných typů mapování specifikovaných ve specifikaci JDBC.
Jak jste si všimli, ovladač Oracle ve výchozím nastavení není kompatibilní se standardem a používá oracle.sql.TIMESTAMP
místo toho (což nerozšiřuje java.sql.Timestamp
). Dobrou zprávou je, že soulad s JDBC můžete vynutit nastavením oracle.jdbc.J2EE13Compliant vlastnost systému na true
během spouštění vm:
java -Doracle.jdbc.J2EE13Compliant=true YourApplication
nebo programově
System.getProperties().setProperty("oracle.jdbc.J2EE13Compliant", "true")
Jakmile to uděláte, getResult() vrátí instance java.sql.Timestamp
podle očekávání.
Další podrobnosti naleznete v příslušné části dokumentace Oracle JDBC Driver Documentation, která popisuje několik způsobů nastavení oracle.jdbc.J2EE13Compliant.