Миграция базы данных с отметкой времени в Grails

Я использую Grails 2.2.4 и базу данных mysql, а также плагин миграции базы данных.

Для данного класса, который сохраняется в базе данных:

class User {
   String name
}

Затем я добавил:

Date lastUpdated

и сделал:

grails dbm-gorm-diff 2013-09-09-lastUpdated.groovy -add
grails dbm-update

Но когда я заглядываю в свою базу данных, я вижу 0000-00-00 00:00:00.

Как получить действительную дату, например, новую дату () в качестве значения по умолчанию?


person confile    schedule 09.09.2013    source источник


Ответы (1)


Попробуйте установить autoTimestamp (по умолчанию это может быть false):

static mapping = {
   autoTimestamp true
   ...
}

Или просто используйте beforeUpdate :

def beforeUpdate() {
   lastUpdated = new Date()
}
person rxn1d    schedule 09.09.2013
comment
Это не работает, последнее обновление по-прежнему 0000-00-00 00:00:00 во всех существующих строках. - person confile; 11.09.2013
comment
Попробуйте def beforeInsert(), если вам нужно заполнить поле lastUpdated при создании нового User. - person rxn1d; 11.09.2013
comment
У вас есть другая идея? - person confile; 12.09.2013
comment
Создайте тестовый класс с теми же полями и создайте для него собственный скрипт миграции (без dbm-gorm-diff). Проверьте, работают ли подходы. Другое решение - создать триггер в вашей БД для обновления поля lastUpdate каждый раз при вставке или обновлении данных, но это очень сложная задача. - person rxn1d; 12.09.2013