【发布时间】:2012-03-07 06:25:22
【问题描述】:
在 spring security 生成的类UserRole 或SecUserSecRole(你可以随便调用它)有一个命令可以创建一个new UserRole() 并用.save(flush:flush, insert:true) 保存它
这是什么意思?它与 .save(flush:true) 有何不同?
【问题讨论】:
标签: grails insert spring-security save flush
在 spring security 生成的类UserRole 或SecUserSecRole(你可以随便调用它)有一个命令可以创建一个new UserRole() 并用.save(flush:flush, insert:true) 保存它
这是什么意思?它与 .save(flush:true) 有何不同?
【问题讨论】:
标签: grails insert spring-security save flush
来自Grails docs:
insert (可选) - 当设置为 true 时将强制 Hibernate 执行 SQL INSERT,这在遗留数据库的某些情况下很有用 (如AS/400),Hibernate无法检测到是否 执行 INSERT 或 UPDATE
【讨论】:
.save()s 会做同样的事情吗?
人们通常使用 flush(),因为他们对 Hibernate 的工作方式感到不舒服。
如果您需要了解更多信息,请查看http://blog.springsource.com/2010/06/23/gorm-gotchas-part-1/
但有时您需要这样做,特别是当您在与 save() 调用相同的线程中工作时,您需要确保域对象被持久化到数据库中。此外,您域中的一些约束使用数据库来检查数据是否有效。有时需要确保验证有效。这里有一个例子:
http://johnrellis.blogspot.com/2009/09/grails-constraints-across-relationships.html
所以基本上,如果您现在真的需要数据库中的某些东西,您应该只使用刷新!这比你想象的要少。希望这能有所帮助,而不是在关于冲水的谈话中出现一点厕所幽默……太自豪了:)
网址:http://grails.1312388.n4.nabble.com/When-to-use-domain-save-flush-true-or-domain-save-td2289869.html
【讨论】: