sql >> Database >  >> RDS >> Oracle

Annotatie Oracle-tabelruimte in slaapstand zetten

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:

  1. Maak uw eigen annotatie, @TableSpec die tablespace en andere noodzakelijke attributen heeft.
  2. Verleng org.hibernate.cfg.Configuration en overschrijf getTableMappings() om gedecoreerde Table terug te geven objecten (zie hieronder).
  3. Verleng org.hibernate.mapping.Table en overschrijf sqlCreateString() en / of sqlAlterStrings() om tabelruimtespecificatie toe te voegen (en eventuele aanvullende instellingen).
  4. 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 roep Configuration.generateSchemaCreationScript() . op of generateSchemaUpdateScript() 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.




  1. Hoe de Meridiem Indicator (AM/PM) toe te voegen aan een tijdwaarde in Oracle

  2. Hoe kan ik een aparte quiestion-ID in de foreach-lus krijgen?

  3. SQL2008 RDL-bestand converteren naar SQL2005

  4. MySQL groeperen op intervallen in een datumbereik