In meiner Hibernate-Anwendung gibt es Annotation-gesteuerte Objekt: AuditEvent. Es ist sehr einfach und hat keine Fremdschlüsselbeziehungen. Ich archiviere alte Einträge in dieser Tabelle, indem ich sie in eine andere Tabelle verschiebe OldAuditEvent, die ein Klon der AuditEvent Tabelle ist.Clone die Definition einer Tabelle mit Hibernate (hbm2ddl)
Gerade jetzt erzeugen wir die DDL für die gesamte Anwendung hbm2ddl mit (auf unserem kommentierten Datenmodell) und manuell Kopieren/Einfügen die AuditEvent Tabelle und seinen Namen OldAuditEvent erstellen ändern.
Ich möchte den Build-Prozess automatisieren, gibt es eine Möglichkeit zu sagen, hbb2ddl: "Hey nehmen Sie diese Entität, ändern Sie den Tabellennamen in X und neu erstellen es ist DDL"?
Aktualisieren: Ich war in der Lage, dies durch den von Ihnen beschriebenen Ansatz zu erreichen. Das einzige Problem war, die AnnotationSessionFactoryBean zu bekommen, da es sich um eine Factory-Bean handelt und die Quelle nur die Ausgabe ihrer Factory liefert. Ich habe ConfigExposingAnnotationSessionFactoryBean (AnnotationSessionFactoryBean erweitern) erstellt, um die Bean-Factory durch eine statische Art zu offenbaren - eine Art Hack, aber ich möchte nur eine Build-Time-Aufgabe ausführen.
Ich werde das versuchen und sehen, ob es funktioniert! Selbst für 2 Tabellen denke ich, dass es das wert ist - manuelle Schritte in einem plattformübergreifenden Build-Prozess ziehen Dinge herunter und verursachen unerwartete Probleme. – Justin
Viel Glück bei Ihrer Implementierung. Der obige Ansatz funktioniert für mich, obwohl ich ihn für einen anderen Zweck verwende (Laufzeit-Entity-Mapping-Manipulation). Ich muss jedoch sagen, dass ich ziemlich verärgert bin über die Hibernate-Umordnung von Spalten im DDL-Skript - ich möchte die gleiche Reihenfolge beibehalten wie in Quellcode-Annotationen. Haben Sie das irgendwie gelöst oder ist das kein Problem für Sie? – ChssPly76
Unser Entwicklungsprozess ist: mit Anmerkungen POJO -> DDL. Wir gehen immer durch Hibernate-Eigenschaftsnamen, sodass Spaltenpositionen nicht wichtig sind. Wenn Hibernate nach dem Zufallsprinzip neu geordnet wird, bedeutet das wahrscheinlich, dass Sie intern irgendwo eine HashSet/Map verwenden. Suchen Sie den Code, wechseln Sie ihn in ein TreeSet/Map und Sie erhalten möglicherweise eine beständige Reihenfolge? – Justin