如何使用Grails从子对象按日期排序?

时间:2015-09-23 18:30:14

标签: grails gorm

我正在尝试根据MyObject.ChildObject中的日期来命令MyObject列表。当我尝试执行以下操作时,我遇到了错误。

List<MyObject> myObjectList = MyObject.createCriteria().list(max: params.max, offset: params.offset) {
            eq('test', test)
            eq('deleted', Boolean.FALSE)
            if (params.sort?.contains(".")) {
                buildSort(params.sort.tokenize("."), params.order, delegate)
            } else {
               order("${params.sort ?: 'childObject.date'}", params.order ?: 'asc')
            }
        }

当我尝试这个时,我得到了

could not resolve property: invoiceTicketDetail.date of: com.test.MyObject. Stacktrace follows:
org.hibernate.QueryException: could not resolve property: childObject.date of: com.test.MyObject
    at grails.orm.PagedResultList.<init>(PagedResultList.java:55)
    at grails.orm.HibernateCriteriaBuilder.createPagedResultList(HibernateCriteriaBuilder.java:230)

这样做的最佳方法是什么?

进入ChildObject我有一个Date date属性。在MyObject中,我有一个ChildObject childObject属性。

1 个答案:

答案 0 :(得分:0)

如果没有childObject的别名或子条件,则无法直接访问childObject.date。尝试使用这样的子标准:

List<MyObject> myObjectList = MyObject.createCriteria().list(max: params.max, offset: params.offset) {
            eq('test', test)
            eq('deleted', Boolean.FALSE)
            if (params.sort?.contains(".")) {
                buildSort(params.sort.tokenize("."), params.order, delegate)
            } else {
               childObject {
                   order("${params.sort ?: 'date'}", params.order ?: 'asc')
               }
            }
        }