我有两个域对象:

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

谢谢,

最佳答案

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

你可以做这样的事情

 class Customer {
   static transients = ['setting']

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

关于grails - 从我不想持久化的getter方法返回默认实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9401235/

10-09 06:16