0

私は持っている

class User {
  String name

  hasMany = [books: Book]
}


class Book (
  String name
  belongsTo = [user: User]
}

これで、ユーザー インスタンスのすべての本に次のようにアクセスできます。

def user = User.find("someId")
println user.books

user.books から最初の x 本だけを取得するように本の数を制限するにはどうすればよいですか? それらを並べ替える方法もありますか?

4

1 に答える 1

2

実行可能なアプローチの 1 つは、 insidebooksとして定義することです。インデックス列が必要になりますが、次のようなページネーションと順序付けの利点を得ることができます。ListUser

class User{
    List books
    static hasMany = [books: Book]
}

def user = User.find("someId")
println user.books?.getAt(3..10).sort{it.name}

注:-ユーザーの
すべての書籍は遅延フェッチされます。上記のアプローチを使用すると、インデックス 3 から 10 までの書籍がフィルター処理されます。

遅延フェッチ戦略 (N + 1) を最適化したい場合は、おそらくbatchSizeorderを確認する必要があります。また、補足として並べ替えます。

例:

class User {
  String name
  static hasMany = [books: Book]
  static mapping = {
      books batchSize: 10
  }
}

class Book (
  String name
  static belongsTo = [user: User]
  static mapping = {
      order "desc"
  }
}
于 2013-06-25T21:49:41.713 に答える