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