hibernate – grails域名关系

我有一个名为School的课程,它有很多学生,所以现在当我使用School.read(读取)读取学校的实例时,我不希望所有的学生都被急切地取出,所以我改变了取得策略的懒惰,

但现在它将取代所有学生,当我将进入school.students,我想手动设置前5名学生,然后如果需要5-10,所以

我们如何以这种方式自定义延迟抓取?

学校有很多学生

学生与学校没有任何关系

最佳答案 您可以使用batchSize自定义在延迟加载期间获取的结果数量:

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

Grails documentation.

编辑

您可以使用查询创建一个简单的服务,而不是调用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名学生.

您可以在official documentation中阅读有关Gorm标准的所有信息.

点赞