基于链接表中的字符串对grails列表进行排序

时间:2014-03-17 10:18:57

标签: grails

我有两个域,一个存储了另一个域的链接,就像这样(我已经删除了所有其他字段以消除噪音): -

class TestScenario {
    static constraints = {
        testscenariodesc(blank:false, maxSize:100, unique: true)
    }

static mapping = {
    table "test_scenario"
    version false
    columns{
        id column:"test_scenario_id"
    }
}

String testscenariodesc

String toString(){
    "${testscenariodesc}"
}
}

用于: -

class TestExecQueue {
    static constraints = {
        testscenarioid()
        myPriority(inList:[0,1,2,3,4], blank:false)
    }

static mapping = {
    table "test_exec_queue"
    version false
    columns{
        id column:"test_exec_queue_id"
        testscenarioid column:"test_scenario_id"
        myPriority column:"Priority"
    }
}

TestScenario testscenarioid
Integer myPriority
}

我的testexecqueue中有一个列表如下: -

 def list(Integer max) {
        params.max = 10000
        [testExecQueueInstanceList: TestExecQueue.list(params), testExecQueueInstanceTotal: TestExecQueue.count()]

    }

但我想要做的是返回testcenariodesc值排序的结果(不是testscenarioID的数值。这可能吗?

我试过了: -

[testExecQueueInstanceList: TestExecQueue.list(params, sort: "testscenarioid", order: "desc"), testExecQueueInstanceTotal: TestExecQueue.count()]

但是当我转到页面时,我收到以下错误:

No signature of method: testautomation.TestExecQueue.list() is applicable for argument types: (java.util.LinkedHashMap, org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[sort:testscenarioid, order:desc], [action:list, ...]] Possible solutions: list(), last(), list(java.util.Map), first(), last(java.lang.String), last(java.util.Map)

我在这里做错了什么?谢谢你的任何建议! :)

1 个答案:

答案 0 :(得分:0)

list()方法接受sortorder参数。有关详细信息,请查看documentation。例如

def results = myDomain.list([max: 10, sort: 'myColumn', order: 'asc'])

或者,您可以在域上指定默认排序顺序。例如:

class MyClass {
  String myColumn
  static mapping = {
    sort 'myColumn'
  }
}