grails:按嵌套属性排序

use*_*614 6 grails grails-orm

是否有可能通过嵌套的属性进行排序哪里查询

我有2个域类:

class Parent {
    String name
    Child child
}
Run Code Online (Sandbox Code Playgroud)

class Child {
    String name
    static belongsTo = [parent: Parent]
}
Run Code Online (Sandbox Code Playgroud)

这有效:

Parent.where {}.list(sort: 'name')
Run Code Online (Sandbox Code Playgroud)

这不是:

Parent.where {}.list(sort: 'child.name')
Run Code Online (Sandbox Code Playgroud)

我有一个错误:

could not resolve property: child.name of: Parent
Run Code Online (Sandbox Code Playgroud)

我使用的是grails 2.3.x.

And*_*tos 10

请参阅:Grails - 按域关系属性排序(使用createCriteria())

解决方案1:

    def criteria = Child.createCriteria();
    println criteria.list{
        createAlias("parent","_parent")
        order( "_parent.name")
    }
Run Code Online (Sandbox Code Playgroud)

解决方案2:

    def criteria = Child.createCriteria();
    println criteria.list{
        parent {
            order("name")
        }
    }
Run Code Online (Sandbox Code Playgroud)

解决方案3:

class Child {
    String name
    static belongsTo = [parent: Parent]

    public String getParentName(){
        return parent.getName()
    }
}

println Child.listOrderByParentName()
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.