Ответ Теда верен, но причина , почему Grails не поддерживает более 2 предикатов, заключается в том, что если все соединения не совпадают, тогда неясно, каково намерение.
Или простым английским языком ...
- Очевидно, что
findAllByYearAndMonthAndDay(1999,2,3)
означает
- Также очевидно, что
findAllByYearOrMonthOrDay(1999,2,3)
означает
- Но не очевидно, что
findAllByYearOrMonthAndDay(1999,2,3)
означает
Однако, если все соединения одинаковы (все and
с или все or
с), то нет причин, по которым более 2 предикатов не могут поддерживаться. На самом деле, если вы будете искать в Grails JIRA, вы обнаружите, что проблема уже открыта. Проголосуйте за это, если вы сильно к этому относитесь.
Кстати, плагин IntelliJ Grails ошибочно обеспечивает завершение кода для динамических искателей с более чем 2 предикатами.
Решение / обходной путь - просто написать запрос Criteria или использовать вместо него HQL.