首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grails域关系

grails域关系
EN

Stack Overflow用户
提问于 2012-11-28 10:57:42
回答 1查看 132关注 0票数 4

我有一个名为School的类,它有许多Students,所以现在当我使用School.read(id)读取School实例时,我不希望所有的学生都被急切地获取,所以我将获取策略改为lazy

但是现在当我访问school.students时,它会获取所有的students,我想先手动设置5个students,然后如果需要5-10,依此类推

我们如何通过这种方式定制延迟抓取呢?

School有很多Student

StudentSchool没有单独的关系

EN

回答 1

Stack Overflow用户

发布于 2012-11-28 11:27:06

您可以使用batchSize自定义在延迟加载期间提取的结果数:

代码语言:javascript
复制
class Book {
…
static mapping = {
    batchSize 10
   }
}

请参阅Grails documentation

编辑

您可以使用查询创建一个简单的服务,而不是调用School.students

代码语言:javascript
复制
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个学生。

您可以在official documentation中阅读有关Gorm标准的所有内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13597037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档