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