在Spring安全性生成的类UserRole
或SecUserSecRole
(您可以随意调用它)中,有一个命令可以生成new UserRole()
并使用.save(flush:flush, insert:true)
保存它
这是什么意思?它与.save(flush:true)有何不同?
答案 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