Hibernate peut mapper une interface - voir exemple . Je doute que Grails supporte cela dans la cartographie par convention - mais vous pouvez essayer d'utiliser la cartographie annotations de l'exemple ci-dessus, ou la configuration XML.
modifier :répondre à une question de commentaire :
Au niveau de la base de données, vous devez avoir un Taggable
table pour Tag.References
à référencer avec une clé étrangère.
-
Le discriminateur ne va PAS vaincre le polymorphisme, s'il est ajouté automatiquement - par exemple, dans le mappage table par hiérarchie, Hibernate/Gorm ajoute une
class
champ afin de trouver une classe concrète lors de la lecture d'un objet à partir de la base de données. -
Si vous mappez votre
Taggable
s à deux tables -Taggable
partie àTaggable
et tout le reste dans une table spécifique, référencée 1:1 - tout le travail de discriminateur doit être effectué pour vous par Hibernate.
BTW class
le champ est assez long - il contient le nom complet de la classe .
modifier 2 :Quoi qu'il en soit, cela devient assez complexe, et j'irais personnellement avec l'approche que j'ai suggérée dans une autre question :
- interroger dynamiquement toutes les classes avec l'interface Taggable pour
hasMany=[tags:Tag]
propriété ; - ou, moins préférable - d'avoir une table enfant fabriquée à la main et un discriminateur.