2015-09-23 3 views
0

Я пытаюсь заказать список MyObject на основе даты в MyObject.ChildObject. Когда я пытаюсь сделать следующее, я получаю сообщение об ошибке.Как заказать по дате от дочернего объекта с Grails?

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 У меня есть атрибут даты. А Into MyObject У меня есть атрибут childObject ChildObject.

+0

Можете ли вы разместить свои классы домена, пожалуйста? – zero01alpha

ответ

0

Вы не можете напрямую получить доступ к childObject.date без псевдонима для childObject или подкатегорий. Попробуйте это с дополнительными критериями:

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') 
       } 
      } 
     } 
Смежные вопросы