Comment faire pour convertir correctement un Oracle champ de Date en java.util.Date par JPA?
J'ai un Oracle Date
colonne dans une table db, et de l'extraction de ce domaine,
EntityManagerFactory emf = Persistence.createEntityManagerFactory("dbPU");
EntityManager em = emf.createEntityManager();
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
String query = "SELECT T.MDATE FROM MTABLE T";
List<Object[]> resultList = em.createNativeQuery(query).getResultList();
for (Object[] data : resultList) {
System.out.println(dateFormat.format((java.util.Date) data[0]));
}
De la "date" de la partie de l'imprimé dates sont correctes, mais le "temps" (ie. heure et seconde) les pièces sont "00:00" pour tous. Cependant, quand j'ai vérifié ce domaine dans SQL Developer, le "temps" de pièces sont différents de ce qu' "00:00". Où est le problème? Merci à l'avance.
EDIT:
Je suis aide,
Hibernate-Version: 3.2.5.ga
hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
Oracle JDBC Driver version 10.2.0.1.0
Oracle Database 11g Express Edition Release 11.2.0.2.0
- cela vous aide ? coderanch.com/t/464371/ORM/java/JPA-Oracle-Date
- ou cette stackoverflow.com/questions/3469018/... ou stackoverflow.com/questions/6347532/...
- Aucun des liens ne l'aide pas. Je suis quering en natif, il n'y a pas de classe d'entité avec le
Date
attribut et@Temporal
annotation en elle. Aussi, je suis en train de lire des régimes autres que l'écriture en elle. Mettre un peu plus d'info sur la question, voir l'édition. - Je sais que c'est pas une solution, mais peut-requête: SELECT to_char(T. MDATE, 'dd.mm.yyyy hh24:mi') à PARTIR de MTABLE T" puis de le convertir en java à une date (c'est à dire avec dateFormat) ?
- Oui, je peux, et le temps que les pièces sont correctement lus dans cette situation. Mais mon exigence est d'écrire des requêtes et non pas en fonction d'Oracle seulement. Il doit être exécutable sur SQL Server.
Vous devez vous connecter pour publier un commentaire.
Ok j'ai enfin résolu mon problème. La cause en était l'aventure de
Date
(etTimestamp
) type de données mappages de Oracle jdbc driver grâce à sa version de la timeline. En bref, le problème a été résolu par la mise à niveau de la ojdbc14.jar pilote pour ojdbc6.jar. Pour plus d'informations, reportez-vous à Ce qui se passe avec la DATE et l'HORODATAGE?En d'autres termes, l'Oracle
DATE
type est mappé à Java comme suit:ojdbc14.jar : DATE
>
java.sql.Dateojdbc6.jar : DATE
>
java.sql.Timestampoù java.sql.La Date n'a pas le temps de parties.
MODIFIER 17.03.2012 :
Si il n'y a aucune chance de mettre à niveau le pilote à cause d'autres restrictions, voici une solution de contournement pour la cartographie Oracle DATE de java.sql.Timestamp en JPA Hibernate: