ドメインクラスのgetterとsetterを上書きしようとしています。これを行う理由は、コード内の非常に多くの場所にあるこのドメインクラスの初期化をやり直す必要がないようにするためです。
以前は「アドレス」が1つあったドメインクラス「銀行」があり、次のように初期化されました。new Bank(address:Address)
今、私は複数の住所が必要なので、マッピングクラスBankAddressがあり、BankにはBankAddressの「addresses」リストがあります。
初期化を同じ「newBank(address:Address)」に保つために、「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)
}
問題は、セッターが呼び出されている間、関数の'instance'パラメーターが空になり、保存に失敗することです--new Bank(address:someAddress):'AddressId'、table'someDB.Config.BankAddress'; 列はnullを許可しません。INSERTは失敗します。
なぜセッターは空の引数を持っているのですか?...私はgroovyとそのダイナミックな性質の初心者です
ご協力ありがとうございました