Tidak, tidak ada cara untuk melakukannya di luar kotak. Saya telah mengatasinya di masa lalu menggunakan pendekatan berikut - agak terlibat -:
- Buat anotasi Anda sendiri,
@TableSpec
yang memiliki tablespace dan atribut lain yang diperlukan. - Perpanjang
org.hibernate.cfg.Configuration
dan gantigetTableMappings()
untuk mengembalikanTable
decorated yang dihias objek (lihat di bawah). - Perpanjang
org.hibernate.mapping.Table
dan gantisqlCreateString()
dan / atausqlAlterStrings()
untuk menambahkan spesifikasi tablespace (dan pengaturan tambahan jika ada). - Alih-alih menggunakan alat hbm2ddl (atau tugas semut) tulis sendiri yang akan membuat
Configuration
Anda objek, proses semua file kelas Anda mengumpulkan dan menafsirkan@TableSpec
. Anda anotasi dan aktifkanConfiguration.generateSchemaCreationScript()
ataugenerateSchemaUpdateScript()
untuk menghasilkan DDL yang sebenarnya.
Seperti yang saya katakan, agak terlibat :-) Sebagai alternatif, jika SEMUA tabel yang dipetakan menggunakan tablespace yang sama, Anda dapat memperluas dialek Oracle yang Anda gunakan dan mengganti getTableTypeString()
untuk mengembalikan spesifikasi tablespace Anda. Meskipun ini adalah peretasan yang buruk (karena tujuan awal tableTypeString adalah untuk menyediakan tipe mesin MySQL), ini bekerja dan tentu saja jauh lebih cepat dan lebih mudah daripada pendekatan di atas.