Grails - 按域关系属性排序(使用createCriteria()) [英] Grails - sort by the domain relation attribute (using createCriteria())

查看:212
本文介绍了Grails - 按域关系属性排序(使用createCriteria())的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  import动作

类任务{
Action actionParent
String taskName
}

p>

  class Action {
String actionName
}

我有任务列表,其中有Action name列,我想通过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&&& parameter.order)
order(parameters.sort,parameters.order)
}

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



感谢任何回放,

Mateo

解决方案

如果你想坚持标准方法,试试这样的事情。为您创建一个别名Action对象,然后访问该属性进行排序

  def criteria = Task.createCriteria()
def taskList = criteria.list {
createAlias(actionParent,_ action)
order(_action.actionName)
}


I have two domain classes with 1:n relationship:

import Action

class Task {    
    Action actionParent
    String taskName
}

and

class Action {
    String actionName
}

I have the list of Tasks where I have the column "Action name", I would like to sort this column by Action.actionName. Now I'm using the createCriteria() method [I need to use it because I have more logic for filtering and sorting...], but I'm able to sort only by "Action.id". This method looks like:

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)
}

Is there any way to sort the domain class data by the relationship attributes?

Thanks for any replay,

Mateo

解决方案

if you want to stick with the criteria approach, try something like this. Create an alias to you Action object and then access the property for sorting it

    def criteria = Task.createCriteria()
    def taskList = criteria.list {
        createAlias("actionParent","_action")
        order( "_action.actionName")
    }

这篇关于Grails - 按域关系属性排序(使用createCriteria())的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆