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 (db インタラクションを処理する基礎となるライブラリ) は、フラッシュ中にダーティ チェック (オブジェクトのフィールドが最後にデータベースから読み取られてから変更されているかどうかをチェックします) を実行し、grails は常に最後にフラッシュを実行します。各リクエストの。

つまり、オブジェクトを保存した後にfileNameフィールドを変更しても、この変更はリクエストが終了したときに db に適用されることがわかります。

これについては、休止状態のエンティティの状態 (例: this ) または "Open Session in View" パターン (grails でデフォルトで使用)を検索することで、詳細を読むことができます。

于 2013-01-05T15:21:13.607 に答える