В Grails есть ли что-то в доменном классе, например, onLoad ()? - PullRequest
2 голосов
/ 17 сентября 2011

Ребята,

У меня есть следующий класс домена:

class Product { 
    String name, 
    String productRecord,

    static transients = ['productRecord']
}

productRecord - это поле, которое создается автоматически на основе идентификатора экземпляра продукта.Так что я подумал, есть ли место, которое будет автоматически вызываться при загрузке экземпляра домена для генерации номера productRecord?

Какой лучший способ сделать это?

Ответы [ 2 ]

7 голосов
/ 18 сентября 2011

Вероятно, вы можете использовать встроенные в События домена :

GORM поддерживает регистрацию событий как методы, которые запускаются при возникновении определенных событий, таких как удаление, вставка иобновления.Ниже приведен список поддерживаемых событий:

  • beforeInsert - выполняется до первоначального сохранения объекта в базе данных
  • beforeUpdate - выполняется до обновления объекта
  • beforeDelete - Выполняется до удаления объекта
  • beforeValidate - Выполняется до проверки объекта
  • afterInsert - Выполняется после сохранения объекта в базе данных
  • afterUpdate - Выполняется послеобъект был обновлен
  • afterDelete - Выполняется после удаления объекта
  • onLoad - Выполняется, когда объект загружается из базы данных

Естьпосмотрите на документы для некоторых примеров.

3 голосов
/ 17 сентября 2011

Обычно это делается путем создания метода получения только для чтения и размещения там логики генерации. Например:

class Product { 
    String name, 
    String getProductRecord{ "Record " + id },

    static transients = ['productRecord']
}

Другой пример доступен здесь .

...