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ę,
@TableSpecktóry ma przestrzeń tabel i inne niezbędne atrybuty. - Rozszerz
org.hibernate.cfg.Configurationi zastąpgetTableMappings()aby zwrócić dekorowanąTableobiekty (patrz poniżej). - Rozszerz
org.hibernate.mapping.Tablei 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ą
Configurationobiektu, przetwórz wszystkie pliki klas, zbierając i interpretując Twój@TableSpecadnotacje 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.