Hibernate Oracle表空间注释

l15*_*15a 6 java oracle annotations hibernate

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

Chs*_*y76 7

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

  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引擎类型),但它的工作原理肯定比上述方法更快更容易.