Hibernate může mapovat rozhraní - viz příklad . Pochybuji, že to Grails podporuje v mapování podle konvence – ale můžete zkusit použít mapování poznámky z výše uvedeného příkladu nebo XML config.
upravit :odpověď na otázku komentáře:
Na úrovni databáze musíte mít Taggable
tabulka pro Tag.References
odkazovat pomocí cizího klíče.
-
Diskriminátor NEBUDE překonávat polymorfismus, pokud je přidán automaticky – například při mapování tabulky na hierarchii Hibernate/Gorm přidá
class
pole za účelem zjištění konkrétní třídy při čtení objektu z db. -
Pokud namapujete
Taggable
s na dvě tabulky -Taggable
část naTaggable
a vše ostatní do konkrétní tabulky s odkazem 1:1 – veškerou práci s diskriminátorem by za vás měla udělat Hibernate.
BTW class
pole je pěkně dlouhé – obsahuje plně kvalifikovaný název třídy .
úprava 2 :Ať tak či onak, začíná to být docela složité a já osobně bych zvolil přístup, který jsem navrhl v jiné otázce :
- dynamicky dotazujte všechny třídy s rozhraním Taggable pro
hasMany=[tags:Tag]
vlastnictví; - nebo, což je méně výhodné - mít ručně vyrobený dětský stůl a diskriminátor.