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,
@TableSpec
que tiene tablespace y otros atributos necesarios. - Extender
org.hibernate.cfg.Configuration
y anulargetTableMappings()
para devolver laTable
decorada objetos (ver más abajo). - Extender
org.hibernate.mapping.Table
y 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
Configuration
objeto, procese todos sus archivos de clase recopilando e interpretando su@TableSpec
anotaciones 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.