Подтвердить что ты не робот

DateCreated, lastUpdated поля в Grails 2.0

У меня есть приложение, которое использует 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 плагин?

4b9b3361

Ответ 1

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

static mapping = {
        autoTimestamp true
}

Я бы предположил, что это свойство не установлено после переноса проекта с Grails 1.3.7 на 2.0.0.

Ответ 2

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

Однако он специально упоминает:

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

Ответ 3

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