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
class
fält för att ta reda på en konkret klass vid läsning av objekt från db. -
Om du mappar din
Taggable
s till två tabeller -Taggable
del tillTaggable
och 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.