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,
@TableSpecdie Tablespace und andere notwendige Attribute hat. - Erweitern Sie
org.hibernate.cfg.ConfigurationundgetTableMappings()überschreiben um dekoriertenTablezurückzugeben Objekte (siehe unten). - Erweitern Sie
org.hibernate.mapping.TableundsqlCreateString()ü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
Configurationerstellt Objekt, verarbeiten Sie alle Ihre Klassendateien, indem Sie Ihre@TableSpecsammeln 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.