dateCreated, lastUpdated поля в Grails 2.0 - PullRequest
12 голосов
/ 29 января 2012

У меня есть приложение, использующее Grails 1.3.7, которое я только что перенес на Grails 2.0.Приложение использует автоматические поля dateCreated и lastUpdated для управления временными метками, связанными с созданием и изменением объектов.После обновления я получаю следующую ошибку:

| Running Grails application
| Error 2012-01-29 22:36:53,504 [Thread-8] ERROR util.JDBCExceptionReporter  - ERROR: null value in column "date_created" violates not-null constraint
| Error 2012-01-29 22:36:53,510 [Thread-8] ERROR events.PatchedDefaultFlushEventListener  - Could not synchronize database state with session

Комментирование вышеупомянутых полей в моих классах доменов устраняет проблему.

Были ли поля dateCreated и lastUpdated объявлены устаревшими в Grails 2.0?Если это так, значит ли это, что мне нужно написать код для обработки этой функциональности вручную или код был перенесен в какой-либо плагин, например плагин audit-trail ?

Ответы [ 3 ]

17 голосов
/ 30 января 2012

Хорошо, исправили это, вручную установив для переменной autoTimestamp значение «true» в определениях классов домена:

static mapping = {
        autoTimestamp true
}

Я думаю, что это свойство не устанавливается после миграции проекта из Grails 1.3.7до 2.0.0.

6 голосов
/ 29 января 2012

Grails 2.0 по-прежнему поддерживает автоматические отметки времени. Это указано в руководстве (прокрутите вверх немного по этой ссылке) .

Тем не менее, он специально упоминает:

Если вы наложите ограничения nullable: false на dateCreated или lastUpdated, ваши экземпляры домена не пройдут проверку - возможно, не то, что вам нужно. Оставьте ограничения для этих свойств, если вы не отключили автоматическую отметку времени.

3 голосов
/ 04 мая 2012

В Grails 2.0.3 есть ошибка, которая может вызвать эту проблему при использовании Postgres. См. http://jira.grails.org/browse/GRAILS-8988. Проблема говорит о том, что она будет решена, когда выйдет 2.0.4.

...