如何使用 Grails 从子对象按日期排序?
How to order by Date from a child object with Grails?
我正在尝试根据 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)
最好的方法是什么?
Into ChildObject 我有一个 Date 日期属性。在 MyObject 中,我有一个 ChildObject childObject 属性。
如果没有 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')
}
}
}
我正在尝试根据 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)
最好的方法是什么?
Into ChildObject 我有一个 Date 日期属性。在 MyObject 中,我有一个 ChildObject childObject 属性。
如果没有 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')
}
}
}