Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Oracle JDBC Types Mapped to Java Object Types by getObject() - wrong document?

this is the document link: "Mapping SQL and Java Types"

let's see 8.9.3 JDBC Types Mapped to Java Object Types at row: TIMESTAMP - java.sql.Timestamp

but when I use getObject() with oracle database on a TIMESTAMP column, the return type is oracle.sql.TIMESTAMP, it can not been cast to java.sql.Timestamp

I know that I can use getTimestamp() but I need getObject() for handling any resultset regardless of types.

Is the document wrong or me?

like image 605
yelliver Avatar asked Jan 30 '13 04:01

yelliver


1 Answers

The document is correct, the Oracle JDBC driver is the problem.

There's 2 possible solutions:

First one, use getObject:

oracle.sql.TIMESTAMP ts = (oracle.sql.TIMESTAMP) res.getObject("last_update");
agent.setLastUpdate(new Date(ts.dateValue().getTime()));

The second is to add a VM argument to your app:

-Doracle.jdbc.J2EE13Compliant=true

This will make the driver return java.sql.Timestamp instead of oracle.sql.TIMESTAMP.

like image 91
joviane Avatar answered Nov 18 '22 18:11

joviane