Hibernate може да картографира интерфейс - вж. пример . Съмнявам се дали Grails поддържа това при картографиране по конвенция - но можете да опитате да използвате картографирането пояснения от примера по-горе или XML конфигурация.
редактиране :отговаряйки на въпрос за коментар:
На ниво база данни трябва да имате Taggable
таблица за Tag.References
за справка с външен ключ.
-
Discriminator НЯМА да победи полиморфизма, ако е добавен автоматично - например при картографиране таблица на йерархия, Hibernate/Gorm добавя
class
поле, за да откриете конкретен клас при четене на обект от db. -
Ако картографирате вашия
Taggable
s към две таблици -Taggable
част къмTaggable
и всичко останало към конкретна таблица, посочена 1:1 - цялата работа на дискриминатора трябва да бъде извършена вместо вас от Hibernate.
BTW class
полето е доста дълго – съдържа пълно име на клас .
редактиране 2 :Така или иначе става доста сложно и аз лично бих се съгласил с подхода, който предложих в друг въпрос :
- динамично заявете всички класове с интерфейс за етикетиране за
hasMany=[tags:Tag]
собственост; - или, по-малко за предпочитане – да имате ръчно изработена детска маса и дискриминатор.