Hibernate dapat memetakan antarmuka - lihat contoh . Saya ragu apakah Grails mendukung ini dalam pemetaan menurut konvensi - tetapi Anda dapat mencoba menggunakan pemetaan anotasi dari contoh di atas, atau konfigurasi XML.
edit :menjawab pertanyaan komentar:
Pada tingkat database, Anda harus memiliki Taggable
tabel untuk Tag.References
untuk referensi dengan kunci asing.
-
Diskriminator TIDAK akan mengalahkan polimorfisme, jika ditambahkan secara otomatis - misalnya, dalam pemetaan tabel-per-hierarki, Hibernate/Gorm menambahkan
class
bidang untuk mengetahui kelas konkret saat membaca objek dari db. -
Jika Anda memetakan
Taggable
. Anda s ke dua tabel -Taggable
bagian keTaggable
dan segala sesuatu yang lain ke tabel tertentu, direferensikan 1:1 - semua pekerjaan diskriminator harus dilakukan untuk Anda oleh Hibernate.
BTW class
bidangnya cukup panjang - berisi nama kelas yang sepenuhnya memenuhi syarat .
edit 2 :Bagaimanapun, ini menjadi sangat rumit, dan saya pribadi akan menggunakan pendekatan yang saya sarankan dalam pertanyaan lain :
- mengkueri semua kelas secara dinamis dengan antarmuka yang dapat diberi tag untuk
hasMany=[tags:Tag]
properti; - atau, kurang disukai - memiliki meja anak kerajinan tangan dan diskriminator.