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引擎类型),但它的工作原理并且比上述方法更快更简单。