2009-08-13 17 views

Antwort

7

Nein, es gibt keine Möglichkeit, es aus der Box zu tun. Ich habe um es in der Vergangenheit bekam die folgende Verwendung - eher beteiligt - Ansatz:

  1. Erstellen Sie Ihre eigene Anmerkung, @TableSpec die Tabellen und andere notwendige Attribute.
  2. Erweitern Sie org.hibernate.cfg.Configuration und überschreiben Sie getTableMappings(), um dekorierte Table Objekte zurückzugeben (siehe unten).
  3. Erweitern Sie org.hibernate.mapping.Table und überschreiben Sie sqlCreateString() und/oder sqlAlterStrings(), um die Tabellenbereichsspezifikation anzuhängen (und ggf. weitere Einstellungen).
  4. Statt mit hbm2ddl Werkzeug (oder Ant-Task) schreiben Sie Ihre eigene, die Ihren Configuration Objekt erstellen wird, verarbeiten alle Ihre Klassendateien zu sammeln und Ihre @TableSpec Anmerkungen zu interpretieren und rufen Configuration.generateSchemaCreationScript() oder generateSchemaUpdateScript() tatsächlichen DDL zu erzeugen.

Wie gesagt, eher beteiligt :-) Als Alternative, wenn alle abgebildeten Tabellen denselben Tabellenbereich verwenden, können Sie Oracle-Dialekt erweitern Sie verwenden und außer Kraft setzen getTableTypeString() Ihre Tabellen spec zurückzukehren. Während dies ein hässlicher Hack ist (weil der ursprüngliche Zweck von tableTypeString ist, den Motortyp MySQL zu liefern), funktioniert es und ist sicherlich viel schneller und einfacher als der obige Ansatz.

Verwandte Themen