Nee, er is geen manier om het uit de doos te doen. Ik ben er in het verleden omheen gekomen door de volgende - nogal betrokken - aanpak te gebruiken:
- Maak uw eigen annotatie,
@TableSpecdie tablespace en andere noodzakelijke attributen heeft. - Verleng
org.hibernate.cfg.Configurationen overschrijfgetTableMappings()om gedecoreerdeTableterug te geven objecten (zie hieronder). - Verleng
org.hibernate.mapping.Tableen overschrijfsqlCreateString()en / ofsqlAlterStrings()om tabelruimtespecificatie toe te voegen (en eventuele aanvullende instellingen). - In plaats van de hbm2ddl-tool (of ant-taak) te gebruiken, schrijft u uw eigen tool om uw
Configurationte maken object, verwerk al je klasbestanden en verzamel en interpreteer je@TableSpecannotaties en roepConfiguration.generateSchemaCreationScript(). op ofgenerateSchemaUpdateScript()om daadwerkelijke DDL te genereren.
Zoals ik al zei, nogal betrokken :-) Als alternatief, als AL je toegewezen tabellen dezelfde tabelruimte gebruiken, kun je het Oracle-dialect dat je gebruikt uitbreiden en getTableTypeString() overschrijven om uw tablespace-specificatie terug te geven. Hoewel dit een lelijke hack is (omdat het oorspronkelijke doel van tableTypeString is om het type MySQL-engine te bieden), werkt het en is het zeker een stuk sneller en gemakkelijker dan de bovenstaande benadering.