0

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

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()

4

1 回答 1

2

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

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

您可以通过搜索休眠实体状态(例如this)或“Open Session in View”模式(默认情况下由 grails 使用)来阅读有关此内容的更多信息

于 2013-01-05T15:21:13.607 回答