我有
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 本书?有没有办法对它们进行排序?
我有
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 本书?有没有办法对它们进行排序?
一种可行的方法是定义books
为List
inside 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),那么您可能需要查看batchSize和order。也作为旁注排序。
例子:
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"
}
}