Oracle SQL DATE de conversion de problème à l'aide d'iBATIS via Java JDBC

Je suis actuellement à la lutte avec un Oracle SQL DATE de conversion de problème à l'aide d'iBATIS à partir de Java.

Suis à l'aide de l'Oracle JDBC mince pilote ojdbc14 version 10.2.0.4.0. iBATIS version 2.3.2. Java 1.6.0_10-rc2-b32.

Le problème tourne autour d'une colonne de type DATE qui est retourné par cet extrait de SQL:

SELECT *
FROM   TABLE(pk_invoice_qry.get_contract_rate(?,?,?,?,?,?,?,?,?,?)) order by from_date

Le paquet d'appel de procédure retourne un ref cursor qui est enveloppé dans un TABLEAU où est alors facile de lire le résultat en tant que bien que ont été d'une requête select sur une table.

En PL/SQL Developer, l'une des colonnes retournées, FROM_DATE, de SQL de type DATE, a précision le moment de la journée:

Tue Dec 16 23:59:00 PST 2008

Mais quand j'y accéder via iBATIS et JDBC, la valeur ne conserve plus de précision à jour:

Tue Dec 16 12:00:00 AM PST 2008

C'est plus clair quand elle est affichée comme suit:

:

1229500740000 milliseconds since epoch
Tuesday, December 16, 2008 11:59:00 PM PST

Mais faire ceci à la place:

1229414400000 milliseconds since epoch
Tuesday, December 16, 2008 12:00:00 AM PST
(as instance of class java.sql.Date)

Peu importe ce que je tente, je suis incapable d'exposer toute la précision de cette colonne de DATE à être renvoyés via Java JDBC et iBATIS.

Ce iBATIS est cartographie de l'est: est-ce

FROM_DATE : 2008-12-03 : class java.sql.Date

L'actuel iBATIS de cartographie est ce:

<result property="from_date" jdbcType="DATE" javaType="java.sql.Date"/>

J'ai aussi essayé:

<result property="from_date" jdbcType="DATETIME" javaType="java.sql.Date"/>

ou

<result property="from_date" jdbcType="TIMESTAMP" javaType="java.sql.Timestamp"/>

Mais toutes les tentatives d'mappages de donner le même tronquée Date de valeur. C'est comme si JDBC a déjà fait le dommage de perdre de la précision des données avant de iBATIS même touche.

Est clair que je vais perdre un peu de ma précision des données via JDBC et iBATIS qui ne se produit pas quand je reste en PL/SQL Developer exécutent le même code SQL comme un script de test. Pas du tout acceptable, très frustrant, et, finalement, très effrayant.

OriginalL'auteur RogerV | 2008-12-20