Grails:.validate()工作但.save()失败的情况

时间:2012-03-02 02:39:07

标签: validation grails gorm

如果一个域类将验证我可以放心它会保存(假设没有像数据库那样超级极端)?更明确地说,在哪种情况下,对象会通过验证但在保存时会抛出错误。

2 个答案:

答案 0 :(得分:3)

如果您的数据库具有不允许插入或更新成功的其他约束,则Save将抛出错误。如果您的数据库没有任何其他限制并且禁止任何类型的基础架构中断,那么save()如果validate()为真,我无法想到{{1}}会失败。

答案 1 :(得分:3)

  

在哪种情况下,对象会通过验证但在保存时会抛出错误。

域类约束可以检查任何内容,因此如果“他们检查的东西”在对validate()save()的调用之间发生变化,那么前者完全有可能成功而后者失败。 / p>

这是一个非常简单的例子

  • Book.ISBN有一个独特的约束
  • myBook.validate()被调用并通过
  • 另一本与myBook具有相同ISBN的图书已保存
  • myBook.save()失败,因为ISBN上的唯一约束现在失败