订单不适用于Grails中的条件

时间:2015-08-05 10:36:42

标签: grails groovy gorm

我刚刚开始使用groovy和grails,并且对Order子句有一些标准的混淆。

以下是我的代码,

def order = "rollNumber"
def orderBy = "asc"


studentListCriteria = Students.createCriteria()

int max = 6
int offset = params?.offset ? Integer.valueOf(params.offset) : 0

def studentList = studentListCriteria.list(max: max, offset: offset) {
        and {
            eq("isActive", Boolean.TRUE )
        }
        order(order,orderBy)
    }

执行时抛出错误。

groovy.lang.MissingMethodExceptionMessageNo signature of method: java.lang.String.call() is applicable for argument types: (java.lang.String, java.lang.String) values: [rollNumber, asc] Possible solutions: wait(), any(), tr(java.lang.String, java.lang.String), trim(), find(), size()   

有谁能建议我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

请检查以下代码,您不能在此处使用关键字。

def orderParameter = "rollNumber"//Change name of variable.
def orderByParameter = "asc"


studentListCriteria = Students.createCriteria()

int max = 6
int offset = params?.offset ? Integer.valueOf(params.offset) : 0

def studentList = studentListCriteria.list(max: max, offset: offset) {
        and {
            eq("isActive", Boolean.TRUE )
        }
        order(orderParameter,orderByParameter)
    }

在这里,您使用order作为变量。请更改它的名称,好好去。

答案 1 :(得分:1)

在此条件之前,您的代码中似乎有一个名为order的变量。更改名称,例如

String orderBy = 'someThing'
....
def studentList = studentListCriteria.list(max: max, offset: offset) {
    ....
}