Ho modellato le mie classi di dominio in Grails con ereditarietà come mostrato di seguito.Cast di ereditarietà delle classi di domini Graal/Groovy
abstract class Profile{
}
class Team extends Profile{
}
class User extends Profile{
}
class B{
static hasMany = [profiles: Profile]
}
Più tardi, i controllori quando ricevo tutti i profili dalla classe B in alcune situazioni mi piacerebbe lanciare alcuni dei profili per squadra o per l'utente, ma non posso perché ho ottenere un java. lang.ClassCastException o GroovyCastException, sebbene siano salvati come Team o Utente (con la classe attributo nel database). Ecco i modi che ho provato:
def team1 = b.profiles.toList()[0] as Team
def team1 = (Team)b.profiles.toList()[0]
Si sta lavorando, quando non scrivo qualsiasi tipo basta usare come è normale in un linguaggio dinamico.
def team1 = b.profiles.toList()[0]
Ma poi non so mai quale classe sto usando. C'è comunque in groovy o gorm per lanciare la classe genitore al bambino?
Non c'è [discriminatore] (http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html) per Gorm di scegliere tra ' User' o 'Team'. Come dovrebbe Gorm decidere quale implementazione usare? – krock
Salva nella stessa tabella del database con un attributo di classe che indica quale classe è. – sgleser87