不,没有办法开箱即用。在过去,我用以下方法(相当复杂)解决了这个问题:
-
创建自己的注释,
@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引擎类型),但它确实有效,而且肯定比上面的方法更快更容易。