Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Pertence polimórfico em muitos para muitos mapeamentos em grails?


O Hibernate pode mapear uma interface - veja exemplo . Duvido que o Grails suporte isso no mapeamento por convenção - mas você pode tentar usar o mapeamento anotações do exemplo acima, ou configuração XML.

editar :respondendo a uma pergunta de comentário:

Em um nível de banco de dados, você precisa ter um Taggable tabela para Tag.References para referenciar com uma chave estrangeira.

  1. O discriminador NÃO derrotará o polimorfismo, se for adicionado automaticamente - por exemplo, no mapeamento de tabela por hierarquia, o Hibernate/Gorm adiciona uma class campo para descobrir uma classe concreta ao ler o objeto do db.

  2. Se você mapear seu Taggable s para duas tabelas - Taggable parte para Taggable e todo o resto para a tabela específica, referenciada 1:1 - todo o trabalho do discriminador deve ser feito para você pelo Hibernate.

BTW class campo é bastante longo - contém um nome de classe totalmente qualificado .

editar 2 :De qualquer forma, está ficando muito complexo, e eu pessoalmente seguiria a abordagem que sugeri em outra pergunta :
  • consultar dinamicamente todas as classes com a interface Taggable para hasMany=[tags:Tag] propriedade;
  • ou, menos preferível, ter uma tabela filha feita à mão e um discriminador.