Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Polymorphic gehörtTo in viele zu viele Zuordnungen in Grals?

Hibernate kann eine Schnittstelle abbilden - siehe Beispiel . Ich bezweifle, dass Grails dies beim Mapping nach Konvention unterstützt - aber Sie können versuchen, das Mapping Anmerkungen aus obigem Beispiel oder XML-Konfiguration.

bearbeiten :eine Kommentarfrage beantworten:

Auf Datenbankebene müssen Sie einen Taggable haben Tabelle für Tag.References mit einem Fremdschlüssel zu referenzieren.

  1. Discriminator besiegt Polymorphismus NICHT, wenn er automatisch hinzugefügt wird - zum Beispiel fügt Hibernate/Gorm bei der Tabelle-pro-Hierarchie-Zuordnung eine class hinzu um eine konkrete Klasse beim Lesen von Objekten aus db herauszufinden.

  2. Wenn Sie Ihr Taggable abbilden s in zwei Tabellen - Taggable Teil zu Taggable und alles andere auf eine bestimmte Tabelle, 1:1 referenziert - die gesamte Diskriminatorarbeit sollte von Hibernate für Sie erledigt werden.

Übrigens class -Feld ist ziemlich lang - es enthält den vollständig qualifizierten Klassennamen .

Bearbeiten 2 :So oder so, es wird ziemlich komplex, und ich persönlich würde dem Ansatz folgen, den ich in einer anderen Frage vorgeschlagen habe :

  • alle Klassen mit Taggable-Schnittstelle dynamisch nach hasMany=[tags:Tag] abfragen Eigentum;
  • oder weniger bevorzugt - einen handgefertigten Kindertisch und einen Diskriminator zu haben.