2014-06-08 4 views
6

Можно ли сортировать по вложенным атрибутам с помощью где запросы?grails: сортировать по вложенным атрибутам

У меня есть 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

ответ

9

Смотреть это: 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() 

Надеюсь, это поможет.

+0

ОК, так что я понимаю, что это невозможно сделать с помощью запросов - мне нужны критерии/ОтдельнаяКритерия. Жаль – user3718614

+0

Я не мог заставить ваше решение 2 работать. Решение 3 работает только в модульных тестах, а не в коде приложения –

Смежные вопросы