sql >> Databáze >  >> RDS >> Oracle

Hibernate Oracle Tablespace Anotace

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:

  1. Vytvořte si vlastní anotaci, @TableSpec který má tabulkový prostor a další nezbytné atributy.
  2. Rozšiřte org.hibernate.cfg.Configuration a přepsat getTableMappings() vrátit zdobenou Table objektů (viz níže).
  3. Rozšiřte org.hibernate.mapping.Table a přepište sqlCreateString() a / nebo sqlAlterStrings() pro připojení specifikace tabulkového prostoru (a případných dalších nastavení).
  4. 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 vyvolejte Configuration.generateSchemaCreationScript() nebo generateSchemaUpdateScript() 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.




  1. Vazba int64 (SQL_BIGINT) jako parametr dotazu způsobuje chybu během provádění v Oracle 10g ODBC

  2. Jak vygenerovat příkaz create table sql pro existující tabulku v postgreSQL

  3. Základní tabulka auditu Oracle Trigger

  4. Vytvořte objekt DIE na serveru SQL Server