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

一种可行的方法是定义booksListinside User。您需要有一个索引列,但您可以获得分页和排序的好处,例如:

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 回答