возвращая экземпляр по умолчанию из метода получения, который я не хочу сохранять - PullRequest
1 голос
/ 22 февраля 2012

У меня есть два объекта домена:

Customer
CustomerConfig

Клиент имеет связь 1-1 с CustomerConfig. Существует 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 Ответ

1 голос
/ 22 февраля 2012

ИМХО, никогда не стоит менять поведение стандартного метода получения / установки по умолчанию, так как им управляет GORM.

Вы можете сделать что-то вроде этого

 class Customer {
   static transients = ['setting']

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