2013-10-01 6 views
0

В объекте домена, вот соответствующий фрагмент моей структуры данных и ограничения блокируютGrails - Обновление объекта домена с нулевой Датой

Date printed 

static constraints = 
{ 
    printed (Display:false, nullable:true)  
} 

, а затем я написал этот метод

def resetPrinted() 
{ 
    printed = null 
    save() 
} 

Когда я выполняю этот метод, printed устанавливается на текущую дату, а не на null.

Я нашел много людей, жалующихся на эту проблему, но мне еще предстоит найти реальное решение. Вот что я нашел до сих пор:

http://jira.grails.org/browse/GRAILS-6943

http://grails.1312388.n4.nabble.com/Grails-1-3-4-won-t-accept-null-dates-td2322178.html

http://java.dzone.com/tips/null-value-save-issue-grails

http://jira.grails.org/browse/GRAILS-7189

Я использую Grails 2.2.4. Если это было как-то исправлено в 2.3.0, я обновляюсь, но в противном случае я бы предпочел.

+0

Он работает, как ожидалось при тестировании с помощью консоли в 2.2.4. Как выглядит ваша реализация? – dmahapatro

+0

dmahapatro, ты прав, это была не проблема. Я не заметил метод 'beforeUpdate()', который также изменял 'print'. Должен ли я удалить этот вопрос, поскольку он оказался бесполезным и будет только отвлекать будущих читателей? – howrad

+0

Я предлагаю вам добавить ответ с тем, что вы столкнулись и узнали (как и почему 'beforeUpdate()') блокирует вас и принимает ответ. – dmahapatro

ответ

0

Оказалось, что я не заметил наличия метода beforeUpdate(), который вызывал setStatusDate(). Это соответствующие разделы этого метода:

def setStatusDate() 
{ 
    def now = new Date() 
    ... 
    else if(status == Status.PRINTED) 
     printed = now 
    ... 
} 

Так resetPrinted() устанавливало его обнулить, но прямо перед произошло обновление, beforeUpdate() был запуск, который называется setStatusDate(), и установить его в now.

ЗАКЛЮЧЕНИЕ: если данные идут наперекосяк, проверьте наличие этих методов: beforeInsert, beforeUpdate, beforeDelete, beforeValidate, afterInsert, afterUpdate, afterDelete, и onLoad

Смежные вопросы