Comment carte oracle horodatage approprié de type java en veille prolongée?
Je suis nouveau sur mise en veille prolongée et je suis perplexe. Dans ma base de données j'ai des tables qui ont une des colonnes de TIMESTAMP(6)
. Je suis à l'aide de Netbeans 6.5.1 et quand je génère le hibernate.reveng.xml
, hbm.xml files
, et pojo files
il définit les colonnes de type Serializable
. Ce n'est pas ce que j'attendais, ni ce que je veux.
J'ai trouvé cette post sur l'hibernation des forums de dire à la place:
<sql-type jdbc-type="OTHER" hibernate-type="java.sql.Timestamp" />
dans le hibernate.reveng.xml
fichier.
Dans Netbeans vous n'êtes pas en mesure de générer les mappages de ce fichier (il en crée une nouvelle à chaque fois) et il ne semble pas avoir la capacité de re-générer à partir du fichier (au moins selon cette il est prévu pour être disponible dans la version 7).
Donc je suis en train de réfléchir à quoi faire. Je suis plus enclin à croire que je suis en train de faire quelque chose de mal depuis que je suis nouveau à cela, et il semble que cela serait un problème commun pour les autres.
- Donc ce que je fais mal?
- Si je ne fais pas quelque chose de mal, comment puis-je contourner cela?
Je suis à l'aide de Netbeans 6.5, Oracle 10G, et je crois que Hibernate 3 (il est venu avec mon netbeans).
Edit: - à-dire que j'ai trouvé cette stackoverflow question, mais c'est vraiment un problème différent.
Mise à JOUR:
Oracle jdbc driver j'ai été en utilisant (ojdbc14.jar) est 9.0.2.0.0
Maintenant j'ai aussi essayé:
- ojdbc14.jar version 10.2.0.4.0
- ojdbc6.jar version 11.2.0.1.0
Désolé, jamais regardé directe de la mise en veille prolongée. Mais l'utilisation d'hibernate via JPA, vous devez utiliser le @annotation Temporelle
la question est à propos de l'ingénierie inverse...
Oracle jdbc driver est l'ojdbc14.jar. C'est ce que tu veux dire par version?
Pas de. Vous trouverez la version dans META-INF/MANIFEST.MF à l'intérieur ojdbc14.jar.
OriginalL'auteur Jacob Schoen | 2010-03-18
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une solution de contournement pour ce problème. La question en elle-même semble tourner autour du fait que Netbeans 6.5 (et je les versions ultérieures jusqu'à ce point) ne vous permettent pas de rétro-concevoir une base de données à partir d'un
hibernate.reveng.xml
fichier. C'est prévu pour être disponible dans la version 7.Le travail, j'ai trouvé est de créer une tâche ant pour recréer le
hbm.xml
et pojo java fichiers. J'ai actuellement cette accroché à arriver quand je fais du nettoyage et de la construction, mais je vais essayer de trouver un moyen de l'avoir complètement séparés, car il n'a besoin d'être couru lorsque le schéma de base de données change.Pour accomplir cela, lorsque vous procédez à un nettoyage et à construire si vous avez besoin de modifier votre
build.xml
fichier.La première partie est les bibliothèques dont vous aurez besoin. Afin d'ajouter:
Vous devriez déjà avoir le hibernate-tools.jar, hibernate3.jar et ojdbc14.jar les fichiers sur votre machine. Donc il suffit de changer le chemin d'accès. Le freemaker.jar et jtidy-r938.jar doit être téléchargé, je n'ai pas ces.
En dessous de cette dans le
build.xml
vous aurez besoin d'ajouter:La dernière section, vous aurez besoin de le mettre à exécution dans l'après-propre section:
configurationfile
points à votre fichier de configuration principal.com.stackoverflow.pojo
par exemple).revengfile
est de la rétro-ingénierie fichier xml à utiliser lors de la création de la hbm et pojo fichiers.hbm2hbmxml
va créer lehbm.xml
fichiers de vos tables.hbm2java
va créer le pojo java fichiers de vos tables.Maintenant pour obtenir l'Oracle des Horodateurs à être autre chose que
Serializable
, modifier lahibernate.reveng.xml
de fichiers et d'ajouter:juste après le schéma de sélection de la balise.
Ainsi, un nettoyage et pour la construction et les horodateurs ne sera pas
java.sql.Timestamp
au lieu deSerializable
objets.C'est une longue réponse, je le sais, mais cela devrait aussi fonctionner pour toutes les autres modifications que vous avez défini dans le
hibernate.reveng.xml
fichier (je pense). Je ne suis pas expert en veille prolongée, de sorte que votre kilométrage peut varier avec cette.Mise à JOUR:
Donc après quelques recherches sur google j'ai trouvé cette site sur les tâches ant dans Netbeans. Alors j'ai tout simplement changé le nom de la cible à
gen-dao
et maintenant il ne marche pas à chaque fois que je fais un nettoyage et construire, juste au moment où j'ai spécifiquement l'invoquer.OriginalL'auteur Jacob Schoen
Je étaient confrontés au même problème et résolu par l'écriture de mes propres RevengNamingStrategy.
SqlTypes de TIMESTAMP_WITH_TIMEZONE et TIMESTAMP_WITH_LOCAL_TIMEZONE types sont -101 et -102.Et Comme il n'y a pas de types de mapping hibernate dans java.sql.Types pour ces types,par conséquent, ils sont de cartographie pour seralizable.
Donc Écrit mes propres RevengNamingStrategy,qui convertit ces type Timestamp.Qui stagiaire convertit à hibernate TimeStampType.
OriginalL'auteur Sunil Kumar