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. -
O discriminador NÃO derrotará o polimorfismo, se for adicionado automaticamente - por exemplo, no mapeamento de tabela por hierarquia, o Hibernate/Gorm adiciona umaclass
campo para descobrir uma classe concreta ao ler o objeto do db.
-
Se você mapear seuTaggable
s para duas tabelas -Taggable
parte paraTaggable
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.