Nej, der er ingen måde at gøre det ud af boksen. Jeg har tidligere omgået det ved at bruge følgende - ret involverede - tilgang:
- Opret din egen annotation,
@TableSpec
der har tablespace og andre nødvendige attributter. - Udvid
org.hibernate.cfg.Configuration
og tilsidesætgetTableMappings()
for at returnere dekoreretTable
objekter (se nedenfor). - Udvid
org.hibernate.mapping.Table
og tilsidesætsqlCreateString()
og / ellersqlAlterStrings()
for at tilføje tablespace-specifikation (og yderligere indstillinger, hvis nogen). - I stedet for at bruge hbm2ddl-værktøjet (eller myre-opgave), skriv din egen, som vil oprette din
Configuration
objekt, behandle alle dine klassefiler ved at indsamle og fortolke din@TableSpec
annoteringer og påkaldConfiguration.generateSchemaCreationScript()
ellergenerateSchemaUpdateScript()
for at generere faktisk DDL.
Som sagt, temmelig involveret :-) Som et alternativ, hvis ALLE dine tilknyttede tabeller bruger det samme tablespace, kan du udvide Oracle-dialekten, du bruger, og tilsidesætte getTableTypeString()
for at returnere din tablespace spec. Selvom dette er et grimt hack (fordi tableTypeStrings oprindelige formål er at levere MySQL-motortype), virker det og er bestemt meget hurtigere og nemmere end ovenstående tilgang.