Tidak, tidak ada cara untuk melakukannya di luar kotak. Saya telah mengatasinya di masa lalu menggunakan pendekatan berikut - agak terlibat -:
- Buat anotasi Anda sendiri,
@TableSpecyang memiliki tablespace dan atribut lain yang diperlukan. - Perpanjang
org.hibernate.cfg.Configurationdan gantigetTableMappings()untuk mengembalikanTabledecorated yang dihias objek (lihat di bawah). - Perpanjang
org.hibernate.mapping.Tabledan 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
ConfigurationAnda 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.