6
我註釋我的DAO並使用hibernate3:hbm2ddl生成ddls。有沒有辦法註釋表空間?休眠Oracle表空間註釋
我註釋我的DAO並使用hibernate3:hbm2ddl生成ddls。有沒有辦法註釋表空間?休眠Oracle表空間註釋
不,開箱即可無法做到。我已經在過去使用過 - 使用了以下方法 - 相關方法:
@TableSpec
具有表空間和其他必要屬性。org.hibernate.cfg.Configuration
並覆蓋getTableMappings()
返回裝飾Table
對象(見下文)。org.hibernate.mapping.Table
並覆蓋sqlCreateString()
和/或sqlAlterStrings()
來追加表空間規範(以及其他設置,如果有的話)。除了使用就是hbm2ddl工具(或Ant任務)的Configuration
對象,過程中的所有類文件收集和解釋你的@TableSpec
註釋和調用Configuration.generateSchemaCreationScript()
或generateSchemaUpdateScript()
產生實際DDL。正如我所說的,相當複雜的:-)作爲替代方案,如果所有的映射表使用相同的表空間,可以延長你使用的是Oracle的方言,並覆蓋getTableTypeString()
來回報您的表空間規範。雖然這是一個醜陋的破解(因爲tableTypeString的最初目的是提供MySQL引擎類型),但它的工作原理並且比上述方法更快更簡單。