Nie, nie da się tego zrobić po wyjęciu z pudełka. Obejrzałem to w przeszłości, stosując następujące - dość zaangażowane - podejście:
- Utwórz własną adnotację,
@TableSpec
który ma przestrzeń tabel i inne niezbędne atrybuty. - Rozszerz
org.hibernate.cfg.Configuration
i zastąpgetTableMappings()
aby zwrócić dekorowanąTable
obiekty (patrz poniżej). - Rozszerz
org.hibernate.mapping.Table
i nadpiszsqlCreateString()
i / lubsqlAlterStrings()
aby dołączyć specyfikację obszaru tabel (i dodatkowe ustawienia, jeśli takie istnieją). - Zamiast używać narzędzia hbm2ddl (lub zadania ant) napisz własne, które utworzy Twoją
Configuration
obiektu, przetwórz wszystkie pliki klas, zbierając i interpretując Twój@TableSpec
adnotacje i wywołajConfiguration.generateSchemaCreationScript()
lubgenerateSchemaUpdateScript()
aby wygenerować rzeczywiste DDL.
Jak powiedziałem, raczej zaangażowane :-) Alternatywnie, jeśli WSZYSTKIE zmapowane tabele używają tego samego obszaru tabel, możesz rozszerzyć dialekt Oracle, którego używasz i nadpisać getTableTypeString()
aby zwrócić specyfikację obszaru tabel. Chociaż jest to brzydki hack (ponieważ pierwotnym celem tableTypeString jest zapewnienie typu silnika MySQL), działa i jest z pewnością o wiele szybszy i łatwiejszy niż powyższe podejście.