He modelado mis clases de dominio en Grails con herencia como se muestra a continuación.Grails/Groovy domain classes inheritance cast
abstract class Profile{
}
class Team extends Profile{
}
class User extends Profile{
}
class B{
static hasMany = [profiles: Profile]
}
Más tarde, en los controladores cuando llegue a todos los perfiles de la clase B en algunas situaciones me gustaría enviar algunos de los perfiles a Equipo o al usuario, pero no puedo porque me conseguir un java. lang.ClassCastException o GroovyCastException, aunque se guardan como un Equipo o Usuario (con la clase de atributo en la base de datos). Aquí están las maneras que he intentado:
def team1 = b.profiles.toList()[0] as Team
def team1 = (Team)b.profiles.toList()[0]
Está funcionando cuando no escribo cualquier tipo sólo lo utilizan como es normal en un lenguaje dinámico.
def team1 = b.profiles.toList()[0]
Pero nunca sé qué clase estoy usando. ¿Hay alguna forma de groovy o gorm para lanzar la clase de padres a hijos?
No hay [discriminador] (http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html) para gorm que elegir entre ' Usuario' o 'Equipo'. ¿Cómo debe decidir Gorm qué implementación usar? – krock
Se guarda en la misma tabla en la base de datos con un atributo de clase que indica de qué clase se trata. – sgleser87