Создайте критерий в Grails

У меня есть два домена в моем проекте, первый — кандидат, а другой — скрининг.

На Заявителя я получил:

  • Имя строки
  • Струнный возраст

На скрининге я получил:

  • Статус строки
  • принадлежит: [заявитель: Заявитель]

Теперь я хотел бы получить всех соискателей с возрастом ‹30 и статусом нанятого

Вот мой код:

def applicant = Applicant.queryForApp(params.age)

queryForApp{age->
lt('age', age)
}

Однако соискатели должны иметь статус нанятых. Я не знаю, как отфильтровать этого кандидата со статусом «Нанят», потому что он относится к другому классу домена.

Любые решения будут оценены.


person Tran Tam    schedule 20.08.2014    source источник
comment
В настоящее время это невозможно, так как связь между Applicant и Screening является однонаправленной. Невозможно запросить это с помощью критериев, если вы не добавите Screening к Applicant   -  person saw303    schedule 20.08.2014


Ответы (1)


Следующие критерии должны работать (не тестировались):

List<Applicant> applicants = Screening.withCriteria {
    eq 'status', 'HIRED'
    applicant {
        lt 'age', 30
    }
    projections {
        property 'applicant'
    }
}
person Iván López    schedule 20.08.2014
comment
500 спасибо за этот ответ :), откуда ты это узнал, братан? Я проверил документы Grails, но мало примеров. - person Tran Tam; 20.08.2014
comment
Я рад, что это сработало! Я научился после многих проектов с Grails :-P. В документации grails.org/doc/latest/guide/GORM.html#criteria, раздел Запросы с проекциями, есть ссылка на документацию по Hibernate Projections. - person Iván López; 20.08.2014