Grails: ситуация, когда .validate () работает, но .save () завершится ошибкой - PullRequest
2 голосов
/ 02 марта 2012

Если класс домена будет проверен, могу ли я быть уверен, что он сохранится (при условии, что ничего сверхъестественного, например, база данных не работает)?Более конкретно, при каких сценариях объект проходит проверку, но выдает ошибку при сохранении.

Ответы [ 2 ]

3 голосов
/ 02 марта 2012

, при каких сценариях объект проходит проверку, но выдает ошибку при сохранении.

Ограничения класса домена могут проверять что угодно, поэтому, если «вызов, который они проверяют», меняется между вызовамиvalidate() и save(), тогда вполне возможно, что первый преуспеет, а второй потерпит неудачу.

Вот очень простой такой пример

  • Book.ISBN имеет уникальное ограничение
  • myBook.validate() вызывается и передает
  • другая книга с тем же ISBN, что и myBook, сохраняется
  • myBook.save() не выполняется, поскольку теперь не выполняется уникальное ограничение для ISBN
3 голосов
/ 02 марта 2012

Сохранение выдаст ошибку, если ваша база данных имеет дополнительные ограничения, которые не позволяют вставку или обновление выполнить успешно.Если ваша база данных не имеет каких-либо дополнительных ограничений и запрещает какие-либо перебои в инфраструктуре, я не могу представить себе причину, по которой save() потерпит неудачу, если validate() истинно.

...