Hibernate puede mapear una interfaz - ver ejemplo . Dudo que Grails admita esto en el mapeo por convención, pero puede intentar usar el mapeo anotaciones del ejemplo anterior, o configuración XML.
editar :respondiendo una pregunta de comentario:
A nivel de base de datos, debe tener un Taggable
tabla para Tag.References
para hacer referencia con una clave externa.
-
El discriminador NO derrotará el polimorfismo, si se agrega automáticamente; por ejemplo, en el mapeo de tabla por jerarquía, Hibernate/Gorm agrega una
class
campo para encontrar una clase concreta al leer el objeto de db. -
Si mapea su
Taggable
s a dos tablas -Taggable
parte aTaggable
y todo lo demás a una tabla específica, referenciada 1:1:Hibernate debe realizar todo el trabajo del discriminador por usted.
Por cierto class
el campo es bastante largo:contiene un nombre de clase completamente calificado .
editar 2 :De cualquier manera, se está volviendo bastante complejo, y personalmente seguiría el enfoque que sugerí en otra pregunta :
- Consulte dinámicamente todas las clases con interfaz Taggable para
hasMany=[tags:Tag]
propiedad; - o, menos preferible, tener una mesa infantil hecha a mano y un discriminador.