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,
@TableSpecder har tablespace og andre nødvendige attributter. - Udvid
org.hibernate.cfg.Configurationog tilsidesætgetTableMappings()for at returnere dekoreretTableobjekter (se nedenfor). - Udvid
org.hibernate.mapping.Tableog 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
Configurationobjekt, behandle alle dine klassefiler ved at indsamle og fortolke din@TableSpecannoteringer 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.