MyEntity.findAllByNameNotLike ( 'плохой%') - PullRequest
0 голосов
/ 30 мая 2010

Я пытаюсь найти все объекты, имена которых частично не соответствуют заданной строке.

MyEntity.findAllByNameNotLike('bad%')

Это дает мне следующую ошибку:

Нет такого свойства: nameNot для класса: MyEntity Возможные решения: name "type =" groovy.lang.MissingPropertyException ">

Я быстро взглянул на критерий стиля, но, похоже, я тоже не могу его реализовать,

def results = MyEntity.withCritieria {
    not(like('name', 'bad%'))
}

Нет подписи метода: MyEntity.withCritieria () применима для типов аргументов: (MyService $ _doSomething_closure1)

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

[grails 1.3.1]

1 Ответ

0 голосов
/ 30 мая 2010

Я разобрался, как это сделать, используя withCriteria, not должен был быть собственным закрытием.

def results = MyEntity.withCritieria {
  not {
    like('name', 'bad%'))
  }
}

Проблема, с которой я изначально столкнулся при использовании withCriteria, заключалась в том, что я пытался протестировать это как модульный тест, который отлично работает с динамическими искателями, но не с API критериев (насколько я могу судить). *

(я оставлю это без ответа на один день, чтобы посмотреть, есть ли у кого-нибудь лучшее решение, иначе я приму мой ответ)

...