No, no hay manera de hacerlo fuera de la caja. Lo solucioné en el pasado usando el siguiente enfoque, bastante complicado:
- Cree su propia anotación,
@TableSpecque tiene tablespace y otros atributos necesarios. - Extender
org.hibernate.cfg.Configurationy anulargetTableMappings()para devolver laTabledecorada objetos (ver más abajo). - Extender
org.hibernate.mapping.Tabley anularsqlCreateString()y/osqlAlterStrings()para agregar la especificación del espacio de tablas (y configuraciones adicionales, si las hay). - En lugar de usar la herramienta hbm2ddl (o la tarea ant), escriba la suya propia que creará su
Configurationobjeto, procese todos sus archivos de clase recopilando e interpretando su@TableSpecanotaciones e invoqueConfiguration.generateSchemaCreationScript()ogenerateSchemaUpdateScript()para generar DDL real.
Como dije, bastante complicado :-) Como alternativa, si TODAS sus tablas mapeadas usan el mismo espacio de tablas, puede extender el dialecto de Oracle que está usando y anular getTableTypeString() para devolver su especificación de tablespace. Si bien este es un truco feo (porque el propósito original de tableTypeString es proporcionar un tipo de motor MySQL), funciona y ciertamente es mucho más rápido y más fácil que el enfoque anterior.