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,
@TableSpec
die tablespace en andere noodzakelijke attributen heeft. - Verleng
org.hibernate.cfg.Configuration
en overschrijfgetTableMappings()
om gedecoreerdeTable
terug te geven objecten (zie hieronder). - Verleng
org.hibernate.mapping.Table
en 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
Configuration
te maken object, verwerk al je klasbestanden en verzamel en interpreteer je@TableSpec
annotaties 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.