Grails .save(flush:true)不会立即保存数据

时间:2014-10-29 08:24:06

标签: hibernate grails gorm

情况:

我使用名为firstService的Grails资源和服务发送请求;

第一个请求的任务是

  1. 保存图书实例book1 book1.save(flush: true);
  2. 同时等待60秒或book1的属性由第二次请求的另一请求更新
  3. 但是当我用book1.save(flush: true);保存时,它不会立即保存,这就是为什么第二个请求在60秒内无法找到book1实例;

    第二个请求的任务只是更新第一个请求的数据。

    我该如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

book1.save()不返回true,返回自身(book1)或在错误时返回null。

有四种方法可以判断对象是否可以保存

    在保存之前
  • validate方法。它应该返回true
  • 保存之前
  • hasErrors属性。它应该返回false
  • save方法返回实例,如果一切正常
  • 带有save参数的
  • (failOnError: true)方法在验证失败时引发错误

如果你完全确定该对象已保存,请检查:

  • 您是否在测试环境中保存对象?测试清除数据库,您必须在每个数据库中创建对象或使用setup方法创建它
  • 您是将对象保存在服务中吗?服务是事务性的,因此如果在保存之后出现错误,则所有事务都是回滚。

注意:每个Grails开发人员都必须阅读@pledbrook文章GORM Gotchas