2012-02-07 4 views
17

Если я выполняю этот код в консоли Grails:Почему GORM не сохраняет мой объект?

def p = new Post(title: "T"); 
p.save(flush: true); // or p.save(); 

Post.count(); 

GORM не метание каких-либо исключений, но данные не сохраняются в моей БД. Что я делаю не так?

+0

В моем случае у меня была другая часть кода, который был удаляемый мой ряд , сразу после создания нового ... :( – Topera

ответ

30

Вероятно, у вас есть нарушение ограничений. Добавьте failOnError: true к вашим параметрам метода сохранения. Тогда вы получите исключение, когда ваше сохранение завершится неудачно. (В качестве альтернативы вы можете проверить возвращаемое значение с сохранением, а если это ложная распечатка p.errors.allErrors().)

Проверка и сохранение выполняются вместе. Если вы проверяете данные, переданные пользователем, которые были привязаны к некоторому объекту домена, то для проверки неудачи сохранения из-за неверного ввода, идиоматическая задача - проверить возвращаемое значение сохранения; отказ из-за недопустимого ввода не является исключительным поведением. Если вы хотите сохранить содержимое объекта и хотите, чтобы возникло исключение, если есть проблема, используйте failOnError.

Подробнее о том, почему они спроектировали GORM, чтобы вам нужно было это сделать see this article.

+1

+1 для ссылки –

+0

Вы также можете использовать 'validate()' на своем доменном объекте, а если он возвращает false, НЕ НАЙДИТЕ его метод save(). Вместо этого контроллер возвращает сообщение пользователю. –

+0

Что делать, если я set failOnError: true, и я не получаю исключений, а объект отмечен как «несохраненный» от Grails? –

11

Возможно, некоторое ограничение на Post нарушено, и, таким образом, объект не сохраняется. Обратите внимание, что поведение GORM по умолчанию заключается не в том, чтобы выбросить неудавшееся сохранение. Вам нужно либо назвать его как

p.save(flush: true, failOnError: true); 

Или изменить поведение во всем мире путем добавления

grails.gorm.failOnError=true 

к вашему Config.groovy

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