2014-11-17 1 views
2

У меня есть следующие классы домена (только пытается показать, что нужно, чтобы получить идею):Как я могу получить объекты, основанные на определенных ассоциациях?

class Scholarship { 

    static hasMany = [grades:Grade] 
} 

и

class Grade { 

    String id 
    String description 
} 

В словах я хотел бы, «Получить все стипендии, где ассоциированный класс_id = myId ". Я хотел бы выполнить это, используя классы домена grails, а не используя sql. Любая помощь приветствуется

ответ

2

Вы ищете что-то вроде этого? ...

def results = Scholarship.withCriteria { 
    grades { 
     // myId must be defined somewhere above... 
     idEq myId 
    } 
} 

EDIT

комментарий ниже добавляет к первоначальному вопросу и спрашивает, что, если было выражено другое соотношение, как это ...

class Scholarship { 
    static hasMany = [grades:Grade,majors:Major]  
} 

Запрос, который я покажу выше, все равно будет таким же. Тот факт, что есть majors коллекция не будет иметь значения, если вы не хотели включить некоторый атрибут Major также быть частью критериев, которые могли бы выглядеть примерно так ...

def results = Scholarship.withCriteria { 
    grades { 
     // myId must be defined somewhere above... 
     idEq myId 
    } 

    majors { 
     // only return Scholarship instances which 
     // contain a Major with the name 'Mechanical Engineering' 
     eq 'name', 'Mechanical Engineering' 
    } 
} 

Я надеюсь, что помогает.

+0

Да, но что, если у меня есть другой имеют много ассоциации, как это: 'code'class Стипендии { статических hasMany = [сорта: Grade, майоров: Основные] }' code' –