Adnotuję moje DAO i używając hibernate3: hbm2ddl do generowania plików ddls. Czy istnieje sposób na opisywanie obszaru tabel?Hibernate Oracle Adumulation Tablespace
6
A
Odpowiedz
7
Nie, nie ma możliwości zrobienia tego po wyjęciu z pudełka. Mam wokół niego w przeszłości, stosując następujące - raczej zaangażowany - podejście:
- Stwórz własną adnotacji,
@TableSpec
, które ma tabel i inne niezbędne atrybuty. - Przedłuż
org.hibernate.cfg.Configuration
i przesuńgetTableMappings()
, aby zwrócić udekorowane obiektyTable
(patrz poniżej). - Rozszerz
org.hibernate.mapping.Table
i przesuńsqlCreateString()
i/lubsqlAlterStrings()
, aby dołączyć specyfikację obszaru tabel (i dodatkowe ustawienia, jeśli takie istnieją). - Zamiast hbm2ddl narzędzie (lub ant zadania) napisać własny, który stworzy swój obiekt
Configuration
, przetwarzać wszystkie pliki klasowe gromadzenia i interpretacji swoich@TableSpec
adnotacje i powołaćConfiguration.generateSchemaCreationScript()
lubgenerateSchemaUpdateScript()
generować rzeczywistą DDL.
Jak powiedziałem, raczej zaangażować :-) Jako alternatywę, jeśli wszystkie Twoje odwzorowane stoły korzystać z tego samego obszaru tabel, można przedłużyć Oracle dialektem, którego używasz i zastąpić getTableTypeString()
aby przywrócić tabel spec. Chociaż jest to brzydki hack (ponieważ pierwotnym celem tableTypeString jest dostarczenie typu silnika MySQL), działa i jest z pewnością dużo szybszy i łatwiejszy niż powyżej.