Динамические искатели Grails не поддерживают более двух предикатов. Это потому, что неясно, будет ли
User.findByNameAndAgeOrGender('foo', 12, 'm')
означает это:
(name == 'foo' && age == 12) || gender == 'm'
или это:
name == 'foo' && (age == 12 || gender == 'm')
Правда, если предикаты всегда объединяются с And
или Or
.
Обновление : начиная с Grails 1.4, вы можете иметь неограниченное количество предикатов, если они все объединены либо с And
, либо с Or
Вместо этого вы можете использовать findWhere
или findAllWhere
(в зависимости от того, хотите ли вы только первый результат или все результаты). Оба из них поддерживают неограниченное количество предикатов, которые, как я предполагаю, объединяются с And
, например:
User.findAllWhere(name: "foo", age: 12, gender: 'm')