2

モデル:

class Author{
   String name
   static hasMany = [books: Book]    
}

class Book{
  String name
  Author author

  static belongsTo = Author
}

それから私はコントローラーを持っています

class MyController{
  def authors{
     def authors = Author.getAll()
     render authors as JSON
  }

問題は、Author-Books の関連付けが遅延している場合でも、各 Author の本を熱心に取得するために N+1 クエリが実行されることです。何が起こり、どうすれば無効にできますか

4

1 に答える 1

5

モデルのすべてのフィールドを変換しようとするデフォルトのJSONコンバーターを使用しています。そのため、これらすべての選択を行っています。

DBに本を要求しないモデル用に独自のJSONコンバーターを実装する必要があります。次のようにBootStrapで実行できます。

import grails.converters.JSON
class BootStrap {
    def init = {servletContext ->
        JSON.registerObjectMarshaller(Author) {
            def returnArray = [:]
            returnArray['name'] = it.name
            return returnArray
    }

}

于 2012-03-12T15:41:29.550 に答える