Nein, out-of-the-box gibt es keine Möglichkeit. Ich habe es in der Vergangenheit mit dem folgenden - ziemlich umständlichen - Ansatz umgangen:
- Erstellen Sie Ihre eigene Anmerkung,
@TableSpec
die Tablespace und andere notwendige Attribute hat. - Erweitern Sie
org.hibernate.cfg.Configuration
undgetTableMappings()
überschreiben um dekoriertenTable
zurückzugeben Objekte (siehe unten). - Erweitern Sie
org.hibernate.mapping.Table
undsqlCreateString()
überschreiben und / odersqlAlterStrings()
um die Tablespace-Spezifikation (und zusätzliche Einstellungen, falls vorhanden) anzuhängen. - Anstatt das hbm2ddl-Tool (oder eine Ameisenaufgabe) zu verwenden, schreiben Sie Ihr eigenes, das Ihre
Configuration
erstellt Objekt, verarbeiten Sie alle Ihre Klassendateien, indem Sie Ihre@TableSpec
sammeln und interpretieren Anmerkungen und rufen SieConfiguration.generateSchemaCreationScript()
auf odergenerateSchemaUpdateScript()
um die eigentliche DDL zu generieren.
Wie gesagt, ziemlich kompliziert :-) Wenn ALLE Ihre zugeordneten Tabellen denselben Tablespace verwenden, können Sie alternativ den von Ihnen verwendeten Oracle-Dialekt erweitern und getTableTypeString()
überschreiben um Ihre Tablespace-Spezifikation zurückzugeben. Obwohl dies ein hässlicher Hack ist (weil der ursprüngliche Zweck von tableTypeString darin besteht, den MySQL-Engine-Typ bereitzustellen), funktioniert er und ist sicherlich viel schneller und einfacher als der obige Ansatz.