Grails 从getter方法返回我不知道的默认实例';我不想坚持

Grails 从getter方法返回我不知道的默认实例';我不想坚持,grails,groovy,gorm,Grails,Groovy,Gorm,我有两个域对象: Customer CustomerConfig Customer与CustomerConfig有1-1关联。对于没有显式保存CustomerConfig的客户,有一个默认CustomerConfig和默认设置,例如: def getConfig() { if (!config) { return new CustomerConfig() //the default settings } else { return config

我有两个域对象:

Customer
CustomerConfig
Customer与CustomerConfig有1-1关联。对于没有显式保存CustomerConfig的客户,有一个默认CustomerConfig和默认设置,例如:

def getConfig() {
    if (!config) {
        return new CustomerConfig() //the default settings
    } else {
        return config
    }
}
我遇到的问题是,当我返回默认设置时,GORM会将CustomerConfig实例保存到数据库中,因为GORM认为该实例已更改

事实上,我不想将其保存到数据库中,因为我希望能够控制客户的默认设置,并为客户进行更新,直到他们有一个显式保存的配置

我还试图避免使用条件逻辑,如下所示:

def config = customer.config?:new CustomerConfig()
并将其封装在Customer domain对象中。看来我应该遵循一种不同的模式。欢迎任何建议

谢谢


cowper

我想,改变默认getter/setter的行为从来都不是一个好主意,因为它们是由GORM管理的

你可以这样做

 class Customer {
   static transients = ['setting']

   public CustomerConfig getSetting(){
    return getConfig()?:new CustomerConfig()
}

恕我直言,改变默认getter/setter的行为从来都不是一个好主意,因为它们是由GORM管理的

你可以这样做

 class Customer {
   static transients = ['setting']

   public CustomerConfig getSetting(){
    return getConfig()?:new CustomerConfig()
}