Grails结果集分页

时间:2012-02-19 17:56:43

标签: grails groovy pagination gorm

假设我有一个User个课程,其中包含许多Customers(标有hasMany属性)。 在课程Customer中,我使用belongsTo标记了所有者。

现在,当我想获得用户的客户时,我只需写User.read(params.id).customers

我想在我的测试项目中加入一个分页,所以阅读整个客户列表并没有多大意义..我会使用类似Customer.findAllByOwner的东西,但这种方法不存在这样的方法..

如何限制此类查询的结果集(偏移和限制)?


package myapp

class User {
    ...
    static hasMany = [customers: Customer]
    ...
}

package myapp

class Customer {
    ...
    static belongsTo = User
    ...
}

2 个答案:

答案 0 :(得分:3)

如果我错了,请纠正我,但这里最简单的形式是你想要根据User对象得到一个Customers列表。

在这种情况下,请将您的客户域类更改为......

class Customer {
   ...
   static belongsTo = [user: User]
   ...
}

然后,在您的控制器中,您可以执行以下操作:

def customerInstanceList = Customer.findAllByUser(User.get(params.id), [max: params.max, offset: params.offset])

希望这有帮助。

答案 1 :(得分:2)

您尝试访问的客户中的媒体资源名称为“用户”而非“所有者”。如果您希望属性名称为所有者,则应为:

static belongsTo = [owner : User]

您可以通过提供包含分页参数的地图作为最终参数来对动态查找程序的结果集进行分页。

def customers = Customer.findAllByOwner(user, [max:params.max, 
                                     offset:params.offset)