我正在尝试覆盖域类的 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)
}
问题是,当我的设置器被调用时,函数的“实例”参数为空,导致保存失败 - new Bank(address:someAddress): 'AddressId', table 'someDB.Config.BankAddress'; 列不允许空值。插入失败。
为什么 setter 有空参数?...我是 groovy 及其动态特性的新手
谢谢您的帮助