gpt4 book ai didi

grails - 覆盖Setter&Getter Domain类

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

我正在尝试覆盖域类的getter和setter。这样做的合理性是,使我不必重做在代码中很多地方都如此的域类的初始化。

我有一个曾经有一个“地址”的域类“银行”,它的初始化如下:
新银行(地址:地址)

现在,我需要多个地址,因此我有一个映射类BankAddress,而Bank现在具有BankAddress的“地址”列表

为了保持初始化相同的“新银行(地址:地址)”,我正在重写“getAddress”和“setAddress”,如下所示:

Address getAddress(){
if(addresses?.size()>0){
addresses.asList().get(0).getAddress()
}else{
return null
}
}

void setAddress(Address instance){
if(addresses?.size()>0){
addresses*.delete()
addresses.clear()
}

def bankAddress = new BankAddress(address: instance, bank: this, isPrimary: true).save(flush: true)
addToAddresses(bankAddress)
}

问题是,在调用我的setter时,该函数的“instance”参数为空,导致保存失败-new Bank(address:someAddress):
'AddressId',表'someDB.Config.BankAddress';列不允许为空。 INSERT失败。

设置员为什么有空论点? ...我是时髦的新手,它的动态特性

谢谢您的帮助

最佳答案

在您的setter中,您将创建一个新的BankAddress对象,然后执行save(flush:true)BankAddress对象的属性之一是提交的Address对象。如果提交的Address对象尚未保存到数据库,则新的BankAddress对象将尝试在数据库的外键列中保存null id,这将失败,因为外键列不可为空。

确保您提交的Address对象已经保存到数据库中,因此它具有主键ID,或者将新BankAddress对象保存到以后。

关于grails - 覆盖Setter&Getter Domain类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12203986/

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