Não, não há como fazer isso fora da caixa. Eu contornei isso no passado usando a seguinte abordagem - bastante envolvida:
- Crie sua própria anotação,
@TableSpec
que tem tablespace e outros atributos necessários. - Estender
org.hibernate.cfg.Configuration
e substituirgetTableMappings()
para retornarTable
decorada objetos (veja abaixo). - Estender
org.hibernate.mapping.Table
e substituirsqlCreateString()
e/ousqlAlterStrings()
para anexar a especificação do tablespace (e configurações adicionais, se houver). - Em vez de usar a ferramenta hbm2ddl (ou tarefa ant), escreva sua própria que criará sua
Configuration
objeto, processe todos os seus arquivos de classe coletando e interpretando seu@TableSpec
anotações e invoqueConfiguration.generateSchemaCreationScript()
ougenerateSchemaUpdateScript()
para gerar DDL real.
Como eu disse, bastante envolvido :-) Como alternativa, se TODAS as suas tabelas mapeadas usarem o mesmo tablespace, você poderá estender o dialeto Oracle que está usando e substituir
getTableTypeString()
para retornar sua especificação de tablespace. Embora este seja um hack feio (porque o objetivo original do tableTypeString é fornecer o tipo de mecanismo MySQL), ele funciona e certamente é muito mais rápido e fácil do que a abordagem acima.