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á
classpole za účelem zjištění konkrétní třídy při čtení objektu z db. -
Pokud namapujete
Taggables na dvě tabulky -Taggablečást naTaggablea 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.