Hibernate kan een interface toewijzen - zie voorbeeld . Ik betwijfel of Grails dit ondersteunt bij het in kaart brengen van een conventie - maar je kunt proberen de mapping te gebruiken annotaties uit het bovenstaande voorbeeld, of XML-configuratie.
bewerken :een reactievraag beantwoorden:
Op databaseniveau moet u een Taggable
. hebben tabel voor Tag.References
verwijzen met een externe sleutel.
-
Discriminator zal polymorfisme NIET verslaan, als het automatisch wordt toegevoegd - bijvoorbeeld in tabel-per-hiërarchie-toewijzing voegt Hibernate/Gorm een
class
toe veld om een concrete klasse te vinden bij het lezen van een object uit db. -
Als u uw
Taggable
. toewijst s naar twee tabellen -Taggable
deel naarTaggable
en al het andere naar een specifieke tabel, waarnaar 1:1 wordt verwezen - al het discriminatorwerk zou door Hibernate voor u moeten worden gedaan.
BTW class
veld is vrij lang - het bevat een volledig gekwalificeerde klasnaam .
bewerk 2 :Hoe dan ook, het wordt behoorlijk complex, en ik zou persoonlijk kiezen voor de aanpak die ik in een andere vraag voorstelde :
- zoek dynamisch alle klassen met de Taggable-interface voor
hasMany=[tags:Tag]
eigendom; - of, minder wenselijk - om een handgemaakte kindertafel en een discriminator te hebben.