Hibernate Oracle表空间注释
我正在注释我的DAO并使用hibernate3:hbm2ddl来生成ddls。 有没有办法注释表空间?
不,没有办法开箱即用。 我过去常常使用以下方法 – 相当复杂的方法:
- 创建自己的注释
@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引擎类型),但它的工作原理肯定比上述方法更快更容易。