2009-08-13 63 views

回答

7

不,开箱即可无法做到。我已经在过去使用过 - 使用了以下方法 - 相关方法:

  1. 创建您自己的注释,@TableSpec具有表空间和其他必要属性。
  2. 延伸org.hibernate.cfg.Configuration并覆盖getTableMappings()返回装饰Table对象(见下文)。
  3. 扩展org.hibernate.mapping.Table并覆盖sqlCreateString()和/或sqlAlterStrings()来追加表空间规范(以及其他设置,如果有的话)。除了使用就是hbm2ddl工具(或Ant任务)的
  4. 写自己,将创建Configuration对象,过程中的所有类文件收集和解释你的@TableSpec注释和调用Configuration.generateSchemaCreationScript()generateSchemaUpdateScript()产生实际DDL。

正如我所说的,相当复杂的:-)作为替代方案,如果所有的映射表使用相同的表空间,可以延长你使用的是Oracle的方言,并覆盖getTableTypeString()来回报您的表空间规范。虽然这是一个丑陋的破解(因为tableTypeString的最初目的是提供MySQL引擎类型),但它的工作原理并且比上述方法更快更简单。