save()如何在Grails中工作?

时间:2013-01-05 14:41:22

标签: grails groovy gorm

如果我的控制器中有以下方法:

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()之后没有任何东西会被保存?

1 个答案:

答案 0 :(得分:2)

Hibernate(处理数据库交互的底层库)在刷新期间执行脏检查(检查对象的字段自上次从数据库中读取后是否已更改),并且grails将始终执行刷新在每个请求结束时。

因此,您可以理解,即使您在保存对象后更改了 fileName 字段,也会在请求结束时在数据库中应用此更改。

您可以通过搜索休眠实体状态(例如this)或“在视图中打开会话”模式(默认情况下由grails使用)来阅读更多内容。