Grails:.save(flush:flush,insert:true)的做法与.save不同(flush:true)

时间:2012-02-15 21:06:27

标签: grails insert spring-security save flush

在Spring安全性生成的类UserRoleSecUserSecRole(您可以随意调用它)中,有一个命令可以生成new UserRole()并使用.save(flush:flush, insert:true)保存它

这是什么意思?它与.save(flush:true)有何不同?

2 个答案:

答案 0 :(得分:5)

来自Grails docs

  

insert(可选) - 当设置为true时,将强制Hibernate执行SQL   INSERT,这在遗留数据库的某些情况下很有用   (例如AS / 400)涉及并且Hibernate无法检测是否   执行INSERT或更新

答案 1 :(得分:4)

人们通常使用flush(),因为他们对Hibernate的工作方式感到不舒服。

如果您需要了解更多相关信息,请查看http://blog.springsource.com/2010/06/23/gorm-gotchas-part-1/

有时您需要,特别是当您在与save()调用相同的线程中工作时,您需要确保Domain对象持久保存到DB中。此外,您域中的某些约束使用数据库来检查数据是否有效。有时需要确保验证有效。这里有一个例子:

http://johnrellis.blogspot.com/2009/09/grails-constraints-across-relationships.html

所以基本上,如果你现在真的需要DB中的东西,你应该只使用flush!这比你想象的要少。希望这个帮助,而不是一个关于冲洗的谈话中的一点厕所幽默......如此自豪:)

网址:http://grails.1312388.n4.nabble.com/When-to-use-domain-save-flush-true-or-domain-save-td2289869.html