Ne, neexistuje způsob, jak to udělat hned po vybalení. V minulosti jsem to obešel pomocí následujícího – spíše zapojeného – přístupu:
- Vytvořte si vlastní anotaci,
@TableSpec
který má tabulkový prostor a další nezbytné atributy. - Rozšiřte
org.hibernate.cfg.Configuration
a přepsatgetTableMappings()
vrátit zdobenouTable
objektů (viz níže). - Rozšiřte
org.hibernate.mapping.Table
a přepištesqlCreateString()
a / nebosqlAlterStrings()
pro připojení specifikace tabulkového prostoru (a případných dalších nastavení). - Namísto použití nástroje hbm2ddl (nebo úkolu ant) si napište vlastní, který vytvoří vaši
Configuration
objekt, zpracujte všechny soubory vaší třídy shromažďováním a interpretací vašeho@TableSpec
anotace a vyvolejteConfiguration.generateSchemaCreationScript()
nebogenerateSchemaUpdateScript()
vygenerovat skutečné DDL.
Jak jsem řekl, spíše zapojen :-) Alternativně, pokud VŠECHNY vaše namapované tabulky používají stejný tabulkový prostor, můžete rozšířit dialekt Oracle, který používáte, a přepsat getTableTypeString()
vrátit specifikaci tabulkového prostoru. I když se jedná o ošklivý hack (protože původním účelem tableTypeString je poskytovat typ enginu MySQL), funguje a je rozhodně mnohem rychlejší a jednodušší než výše uvedený přístup.