【问题标题】:Order is not working with criteria in Grails订单不适用于 Grails 中的标准
【发布时间】:2015-08-05 10:36:41
【问题描述】:

我刚刚开始使用 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()   

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

【问题讨论】:

  • 请提供更多详细信息,您如何创建 studentListCriteria 对象以及您编写的其他内容。
  • @Pratik,实际上我正在使用 Order 子句的变量。价值是动态的。让我更新我的代码。

标签: grails groovy grails-orm


【解决方案1】:

请检查下面的代码,你不能在这里使用关键字。

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 作为变量。请更改它的名称,一切顺利。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2015-04-06
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2017-03-24
      相关资源
      最近更新 更多