Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le polymorphe appartient à dans la cartographie plusieurs à plusieurs dans les graals ?

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.

  1. 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.

  2. 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.