【问题标题】:grails: sort by nested attributesgrails:按嵌套属性排序
【发布时间】:2014-06-08 09:11:19
【问题描述】:

是否可以使用 where 查询按嵌套属性排序?

我有 2 个域类:

class Parent {
    String name
    Child child
}

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

这行得通:

Parent.where {}.list(sort: 'name')

这不是:

Parent.where {}.list(sort: 'child.name')

我有一个错误:

could not resolve property: child.name of: Parent

我正在使用 grails 2.3.x

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    看到这个:Grails - sort by the domain relation attribute (using createCriteria())

    解决方案 1:

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

    解决方案 2:

        def criteria = Child.createCriteria();
        println criteria.list{
            parent {
                order("name")
            }
        }
    

    解决方案 3:

    class Child {
        String name
        static belongsTo = [parent: Parent]
    
        public String getParentName(){
            return parent.getName()
        }
    }
    
    println Child.listOrderByParentName()
    

    希望对你有帮助。

    【讨论】:

    • 好的,所以我理解,无法使用 where 查询来执行此操作 - 我需要 Criteria/DetachedCriteria。可惜了
    • 我无法让您的解决方案 2 工作。解决方案 3 仅适用于单元测试,不适用于应用程序代码
    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 2017-07-04
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多