我在 Grails 中使用继承对我的域类进行了建模,如下所示。
abstract class Profile{
}
class Team extends Profile{
}
class User extends Profile{
}
class B{
static hasMany = [profiles: Profile]
}
稍后在控制器中,当我在某些情况下从 B 类获取所有配置文件时,我想将一些配置文件转换为 Team 或 User,但我不能,因为我得到 java.lang.ClassCastException 或 GroovyCastException,虽然它们被保存为团队或用户(具有数据库中的属性类)。以下是我尝试过的方法:
def team1 = b.profiles.toList()[0] as Team
def team1 = (Team)b.profiles.toList()[0]
当我不编写任何类型时它正在工作,只是使用它,因为它在动态语言中是正常的。
def team1 = b.profiles.toList()[0]
但后来我永远不知道我正在使用哪个类。在 groovy 或 gorm 中是否有将父类转换为子类的方法?