Grails-按域关系属性排序(使用createCriteria())

Mat*_*teo 3 grails hibernate grails-orm grails-domain-class

我有两个具有1:n关系的域类:

import Action

class Task {    
    Action actionParent
    String taskName
}
Run Code Online (Sandbox Code Playgroud)

class Action {
    String actionName
}
Run Code Online (Sandbox Code Playgroud)

我有“任务名称”列的“任务”列表,我想按Action.actionName对该列进行排序。现在,我正在使用createCriteria()方法[我需要使用它,因为我有更多的逻辑进行过滤和排序...],但是我只能按“ Action.id”进行排序。该方法如下所示:

def criteria = Task.createCriteria();
taskList = criteria.list {
    if(parameters.max != null)
        maxResults(parameters.max)
    if(parameters.offset != null)
        firstResult(new Integer(parameters.offset))
    if(parameters.sort != null && parameters.order)
        order(parameters.sort, parameters.order)
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过关系属性对域类数据进行排序?

感谢您的重播,

马泰奥

Aar*_*ers 5

如果您要坚持使用标准方法,请尝试这样的方法。为您的Action对象创建一个别名,然后访问属性以对其进行排序

    def criteria = Task.createCriteria()
    def taskList = criteria.list {
        createAlias("actionParent","_action")
        order( "_action.actionName")
    }
Run Code Online (Sandbox Code Playgroud)