从我不想持久的getter方法返回默认实例

时间:2012-02-22 19:00:43

标签: grails groovy gorm

我有两个域对象:

Customer
CustomerConfig

客户与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域对象中。似乎我应该遵循不同的模式。欢迎任何建议。

谢谢,

考珀

1 个答案:

答案 0 :(得分:1)

恕我直言,改变默认getter / setter的行为绝不是一个好主意,因为这些是由GORM管理的。

你可以做这样的事情

 class Customer {
   static transients = ['setting']

   public CustomerConfig getSetting(){
    return getConfig()?:new CustomerConfig()
}
相关问题