Mysql
 sql >> Database >  >> RDS >> Mysql

Il polimorfico appartiene a molti a molti mappatura nei graal?

Hibernate può mappare un'interfaccia - vedi esempio . Dubito che Grails lo supporti nella mappatura per convenzione, ma puoi provare a utilizzare la mappatura annotazioni dall'esempio sopra, o config. XML.

modifica :risposta a una domanda di commento:

A livello di database, devi avere un Taggable tabella per Tag.References fare riferimento con una chiave esterna.

  1. Il discriminatore NON sconfiggerà il polimorfismo, se viene aggiunto automaticamente, ad esempio, nella mappatura tabella per gerarchia, Hibernate/Gorm aggiunge una class campo per scoprire una classe concreta durante la lettura dell'oggetto da db.

  2. Se mappi il tuo Taggable s in due tabelle - Taggable parte a Taggable e tutto il resto in una tabella specifica, referenziata 1:1 - tutto il lavoro di discriminazione dovrebbe essere svolto per te da Hibernate.

BTW class il campo è piuttosto lungo:contiene il nome della classe completo .

modifica 2 :Ad ogni modo, sta diventando piuttosto complesso e personalmente seguirei l'approccio che ho suggerito in un'altra domanda :

  • interroga dinamicamente tutte le classi con l'interfaccia Taggable per hasMany=[tags:Tag] proprietà;
  • o, meno preferibile, avere un tavolo bambino artigianale e un discriminatore.