gpt4 book ai didi

Grails/Groovy 域类继承转换

转载 作者:行者123 更新时间:2023-12-04 15:25:15 25 4
gpt4 key购买 nike

我使用继承在 Grails 中为我的域类建模,如下所示。

abstract class Profile{
}

class Team extends Profile{
}

class User extends Profile{
}

class B{
static hasMany = [profiles: Profile]
}

稍后在 Controller 中,当我在某些情况下从 B 类获取所有配置文件时,我想将一些配置文件转换为团队或用户,但我不能,因为我收到了 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]

但后来我永远不知道我在使用哪个类(class)。无论如何,在 groovy 或 gorm 中是否有将父类转换为子类的方法?

最佳答案

答案是因为真正的 GORM/Hibernate 实例是一个代理对象。所以它不能直接转换为实体类。

无论如何,这可能会有所帮助:

def team1 = b.profiles.toList()[0]
if(team1.instanceOf(Team)) {
// I am an instance of Team
// do something here.
}

关于Grails/Groovy 域类继承转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com