Nej, det finns inget sätt att göra det ur lådan. Jag har kommit runt det tidigare med följande - ganska involverade - tillvägagångssätt:
- Skapa din egen kommentar,
@TableSpec
som har tabellutrymme och andra nödvändiga attribut. - Utöka
org.hibernate.cfg.Configuration
och åsidosättgetTableMappings()
för att returnera dekoreratTable
objekt (se nedan). - Utöka
org.hibernate.mapping.Table
och åsidosättsqlCreateString()
och / ellersqlAlterStrings()
för att lägga till tabellutrymmesspecifikation (och ytterligare inställningar om några). - Istället för att använda hbm2ddl-verktyget (eller myruppgift) skriv din egen som skapar din
Configuration
objekt, bearbeta alla dina klassfiler och samla in och tolka din@TableSpec
anteckningar och anropaConfiguration.generateSchemaCreationScript()
ellergenerateSchemaUpdateScript()
för att generera faktisk DDL.
Som jag sa, ganska involverad :-) Som ett alternativ, om ALLA dina mappade tabeller använder samma tabellutrymme, kan du utöka Oracle-dialekten du använder och åsidosätta getTableTypeString()
för att returnera din tablespace spec. Även om detta är ett fult hack (eftersom tableTypeStrings ursprungliga syfte är att tillhandahålla MySQL-motortyp), fungerar det och är säkerligen mycket snabbare och enklare än ovanstående tillvägagångssätt.