如果我的控制器中有以下方法:
def save() {
def userInstance = new User(params)
if (userInstance.save(flush: true)) {
def file = request.getFile("myFile")
userInstance.fileName = file.getOriginalFileName()
}
}
尽管我在调用.save()
之前调用了request.fileName = file.getOriginalFileName()
,但数据库确实具有fileName
列的值。我会假设在调用.save()
之后没有任何东西会被保存?
答案 0 :(得分:2)
Hibernate(处理数据库交互的底层库)在刷新期间执行脏检查(检查对象的字段自上次从数据库中读取后是否已更改),并且grails将始终执行刷新在每个请求结束时。
因此,您可以理解,即使您在保存对象后更改了 fileName 字段,也会在请求结束时在数据库中应用此更改。
您可以通过搜索休眠实体状态(例如this)或“在视图中打开会话”模式(默认情况下由grails使用)来阅读更多内容。