Hibernate Oracle表空间注释

我正在注释我的DAO并使用hibernate3:hbm2ddl来生成ddls。 有没有办法注释表空间?

不,没有办法开箱即用。 我过去常常使用以下方法 – 相当复杂的方法:

  1. 创建自己的注释@TableSpec ,它具有表空间和其他必要的属性。
  2. 扩展org.hibernate.cfg.Configuration并覆盖getTableMappings()以返回修饰的Table对象(见下文)。
  3. 扩展org.hibernate.mapping.Table并覆盖sqlCreateString()和/或sqlAlterStrings()以附加表空间规范(以及其他设置,如果有的话)。
  4. 不要使用hbm2ddl工具(或ant任务)编写自己的工具来创建Configuration对象,处理收集和解释@TableSpec注释的所有类文件,并调用Configuration.generateSchemaCreationScript()generateSchemaUpdateScript()来生成实际的DDL。

正如我所说,而是涉及:-)作为替代方案,如果您的所有映射表使用相同的表空间,您可以扩展您正在使用的Oracle方言并覆盖getTableTypeString()以返回您的表空间规范。 虽然这是一个丑陋的黑客(因为tableTypeString的最初目的是提供MySQL引擎类型),但它的工作原理肯定比上述方法更快更容易。