Hibernate kan kartlägga ett gränssnitt - se exempel . Jag tvivlar på om Grails stöder detta i by-konvention kartläggning - men du kan prova att använda kartläggningen kommentarer från exemplet ovan, eller XML config.
redigera :svara på en kommentarsfråga:
På databasnivå måste du ha en Taggable tabell för Tag.References att referera med en främmande nyckel.
-
Diskriminator kommer INTE att besegra polymorfism, om den läggs till automatiskt - till exempel i tabell-per-hierarki-mappning lägger Hibernate/Gorm till en
classfält för att ta reda på en konkret klass vid läsning av objekt från db. -
Om du mappar din
Taggables till två tabeller -Taggabledel tillTaggableoch allt annat till specifik tabell, refererad 1:1 - allt diskrimineringsarbete bör göras åt dig av Hibernate.
BTW class fältet är ganska långt - det innehåller ett fullständigt kvalificerat klassnamn .
redigera 2 :Oavsett vilket, det blir ganska komplicerat, och jag skulle personligen gå med på det sätt jag föreslog i en annan fråga :
- sök dynamiskt alla klasser med Taggable-gränssnitt för
hasMany=[tags:Tag]egendom; - eller, mindre föredraget - att ha ett handgjort barnbord och en diskriminator.