我刚刚开始使用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()
有谁能建议我在这里做错了什么?
答案 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) {
....
}