MyEntity.findAllByNameNotLike( '坏%')

时间:2010-05-30 13:52:09

标签: grails persistence

我正在尝试提取名称与给定字符串不匹配的所有实体。

MyEntity.findAllByNameNotLike('bad%')

这给了我以下错误:

  

没有这样的属性:nameNot for class:MyEntity   可能的解决方案:名称“type =”groovy.lang.MissingPropertyException“>

我快速浏览了criteria风格,但我似乎无法做到这一点,

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

没有方法签名:MyEntity.withCritieria()适用于参数类型:(MyService $ _doSomething_closure1)

理想情况下,我希望能够在finder级别应用此限制,因为数据库包含大量我不想加载的实体,然后出于性能原因而排除。

[grails 1.3.1]

1 个答案:

答案 0 :(得分:0)

我已经找到了如何使用withCriteria执行此操作,not应该是自己的闭包。

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

我最初使用withCriteria时遇到的问题是我试图将其作为一个单元测试来测试,它可以与动态查找器一起使用,但不能使用标准API(据我所知)。

(我会留下一天的答案,看看是否有人有更好的解决方案,否则我会接受我的回答)