いいえ、箱から出してそれを行う方法はありません。私は過去に、次の-かなり複雑な-アプローチを使用してそれを回避しました:
- 独自のアノテーション
@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エンジンタイプを提供することであるため)、機能し、上記のアプローチよりもはるかに高速で簡単です。