2009-08-13 104 views

回答

7

不,開箱即可無法做到。我已經在過去使用過 - 使用了以下方法 - 相關方法:

  1. 創建您自己的註釋,@TableSpec具有表空間和其他必要屬性。
  2. 延伸org.hibernate.cfg.Configuration並覆蓋getTableMappings()返回裝飾Table對象(見下文)。
  3. 擴展org.hibernate.mapping.Table並覆蓋sqlCreateString()和/或sqlAlterStrings()來追加表空間規範(以及其他設置,如果有的話)。除了使用就是hbm2ddl工具(或Ant任務)的
  4. 寫自己,將創建Configuration對象,過程中的所有類文件收集和解釋你的@TableSpec註釋和調用Configuration.generateSchemaCreationScript()generateSchemaUpdateScript()產生實際DDL。

正如我所說的,相當複雜的:-)作爲替代方案,如果所有的映射表使用相同的表空間,可以延長你使用的是Oracle的方言,並覆蓋getTableTypeString()來回報您的表空間規範。雖然這是一個醜陋的破解(因爲tableTypeString的最初目的是提供MySQL引擎類型),但它的工作原理並且比上述方法更快更簡單。