4

School私はit has manyというクラスを持っているので、 usingStudentsのインスタンスを読んだときに、すべての学生を熱心に取得したくないので、取得戦略を に変更しました。SchoolSchool.read(id)lazy

studentsしかし、今ではアクセスするときにすべてをフェッチしますschool.students。最初に手動で 5 を設定しstudents、必要に応じて 5 ~ 10 を設定します。

この方法で遅延フェッチをカスタマイズするにはどうすればよいでしょうか?

School多くを持っていますStudent

StudentSchool個人とは関係ありません

4

1 に答える 1

2

batchSizeを使用して、遅延読み込み中に取得する結果の数をカスタマイズできます。

class Book {
…
static mapping = {
    batchSize 10
   }
}

Grails のドキュメントを参照してください。

編集

呼び出す代わりにSchool.students、クエリで簡単なサービスを作成できます

class SchoolService{

def getLastStudents(School school, int max, int offset){
        // (Not tested but should be something like this)
        def query = "select student from School school join school.students student where school=:school"
        def students = School.executeQuery(query, [school: school], [max: max, offset: offset]) }

}

schoolService.getLastStudents(school, 10, 0)次に、たとえば最後の 10 人の学生を取得するために呼び出します。

Gorm の基準については、公式ドキュメントですべて読むことができます。

于 2012-11-28T03:27:05.610 に答える