Wie um die Karte von oracle timestamp java-Typ in den Ruhezustand?
Ich bin neu in den Ruhezustand und ich bin ratlos. In meiner Datenbank habe ich die Tabellen, die ein Spalten der TIMESTAMP(6)
. Ich bin mit Netbeans 6.5.1 und wenn ich generieren die hibernate.reveng.xml
, hbm.xml files
, und pojo files
es setzt die Spalten des Typs Serializable
. Dies ist nicht das, was ich erwartet habe, noch das, was ich will.
Fand ich diese post auf den hibernate-Foren sagen zu Ort:
<sql-type jdbc-type="OTHER" hibernate-type="java.sql.Timestamp" />
in der hibernate.reveng.xml
Datei.
In Netbeans sind Sie nicht in der Lage zum erzeugen der mappings von dieser Datei (es gibt ein neues jedes mal) und es scheint nicht zu haben die Fähigkeit, sich zu re-generieren Sie aus der Datei entweder (zumindest nach diese es ist vorgesehen, in der version 7).
So, ich bin versucht, herauszufinden, was zu tun ist. Ich bin eher geneigt zu glauben, ich mache etwas falsch, denn ich bin neu in diesem, und es scheint so, als wäre es ein häufiges problem für andere.
- Also was mache ich falsch?
- Wenn ich nicht alles falsch, wie kann ich dies umgehen?
Ich bin mit Netbeans 6.5, Oracle 10G, und ich glaube, Hibernate 3 (es kam mit meinem netbeans).
Edit: wollte sagen, ich fand diese stackoverflow-Frage, aber es ist wirklich ein anderes problem.
UPDATE:
Der oracle-jdbc-Treiber, den ich verwendet wurde (ojdbc14.jar) ist 9.0.2.0.0
Ich habe jetzt auch versucht:
- ojdbc14.jar version 10.2.0.4.0
- ojdbc6.jar version 11.2.0.1.0
Sorry, nie sah direkt hibernate. Aber mit hibernate via JPA verwenden müssen Sie die @Temporal-annotation
die Frage ist, über reverse-engineering...
Der oracle-jdbc-Treiber ist die ojdbc14.jar. Ist es das, was du meinst-version?
Nein. Sie finden die version im META-INF/MANIFEST.MF-innen ojdbc14.jar.
InformationsquelleAutor Jacob Schoen | 2010-03-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich eine Arbeit um für dieses problem. Das Problem selbst scheint zu Kreisen um die Tatsache, dass Netbeans 6.5 (und ich spätere Versionen, bis zu diesem Punkt) lassen Sie sich nicht zum reverse Engineering einer Datenbank aus einer vorhandenen
hibernate.reveng.xml
- Datei. Dies ist geplant, um sein in version 7.Die Arbeit, die ich gefunden ist, erstellen Sie eine ant-task zu erstellen die
hbm.xml
und pojo java-Dateien. Im Moment habe ich dieses süchtig zu passieren, wenn ich ein sauberes und bauen, aber ich werde versuchen, einen Weg zu finden, um es vollständig zu trennen, da es müssen nur ausgeführt werden, wenn das Datenbank-schema änderungen.Um dies zu erreichen, wenn Sie tun, eine saubere und bauen, obwohl, müssen Sie Bearbeiten Ihre
build.xml
Datei.Den ersten Teil der Bibliotheken, die Sie benötigen. So fügen Sie hinzu:
Sollten Sie schon haben hibernate-tools.jar, hibernate3.jar und ojdbc14.jar Dateien auf Ihrer Maschine. Also einfach den Pfad ändern. Die freemaker.jar und jtidy-r938.jar wird, die heruntergeladen werden müssen, da ich nicht haben.
Unterhalb dieser in der
build.xml
Sie wird hinzufügen müssen:Den letzten Abschnitt, den Sie benötigen, ist in der Menge zu laufen in der post-clean Abschnitt:
configurationfile
Punkte zu Ihrem Haupt-Konfigurations-Datei.com.stackoverflow.pojo
zum Beispiel).revengfile
ist das reverse-engineering xml-Datei bei der Erstellung der hbm und pojo-Dateien.hbm2hbmxml
erstellen derhbm.xml
Dateien der Tabellen.hbm2java
erstellen der java-pojo-Dateien der Tabellen.Jetzt, um die Oracle-Timestamps zu sein, etwas anderes als
Serializable
Bearbeiten Sie diehibernate.reveng.xml
- Datei und fügen Sie hinzu:nur nach dem schema-Auswahl-tag.
So eine saubere und bauen, und die Zeitstempel werden nicht
java.sql.Timestamp
stattSerializable
Objekte.Dies ist eine lange Antwort, ich weiß, aber das sollte auch für alle anderen änderungen, die Sie in der
hibernate.reveng.xml
- Datei (glaube ich). Ich bin kein Experte im Ruhezustand, so kann Ihre Laufleistung variieren mit dieser.UPDATE:
Also nach einigen googeln fand ich diese Website über custom ant tasks in Netbeans. Also habe ich einfach geändert, der name des Ziel
gen-dao
und jetzt läuft es nicht jedes mal, wenn ich eine saubere und bauen, nur wenn ich gezielt aufgerufen werden können.InformationsquelleAutor Jacob Schoen
Ich Stand vor ähnlichen Problem und es behoben, durch das schreiben meiner eigenen RevengNamingStrategy.
SqlTypes von TIMESTAMP_WITH_TIMEZONE und TIMESTAMP_WITH_LOCAL_TIMEZONE Arten sind -101 und -102.Und Da gibt es kein hibernate mapping-Typen in java.sql.Typen für diese Typen,Sie sind daher die Zuordnung zu seralizable.
So Schrieb meine eigenen RevengNamingStrategy,welcher wandelt diese Typ Timestamp.Die intern konvertiert zu überwintern TimeStampType.
InformationsquelleAutor Sunil Kumar