Почему предложения «и» и «или» не работают внутри метода findAll() в Grails?
Например, этот код:
Student.findAll {
and {
name == "A"
name ==~ "%A"
}
}.collect { it.name }
сгенерирует список:
['AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ']
что неправильно. Он не должен был ничего генерировать. Ни одна из записей не соответствует условию, имеющему точное имя «А» и окончание «А». Показанная строка содержит ВСЕ записи в моей таблице Student.
Становится немного хуже. Этот код:
Student.findAll {
or {
name == "A"
name ==~ "%A"
}
}.collect { it.name }
генерирует тот же список:
['AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ']
когда на самом деле должна была вернуться только запись «АА».
Что-то не так с этим кодом?
Спасибо!