2010-05-30 4 views
0

Je tente d'extraire toutes les entités dont le nom ne correspond pas partiellement à une chaîne donnée.MyEntity.findAllByNameNotLike ('bad%')

MyEntity.findAllByNameNotLike('bad%') 

Cela me donne l'erreur suivante:

No such property: nameNot for class: MyEntity Possible solutions: name" type="groovy.lang.MissingPropertyException">

J'ai eu un coup d'œil sur le style criteria, mais je ne peux pas sembler obtenir qu'aller soit,

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

No signature of method: MyEntity.withCritieria() is applicable for argument types: (MyService$_doSomething_closure1)

Idéalement, je voudrais pouvoir appliquer cette restriction au niveau du chercheur car la base de données contient un grand nombre d'entités que je ne veux pas charger puis exclure pour des raisons de performance.

[Grails 1.3.1]

Répondre

0

Je travaille sur comment faire en utilisant withCriteria, le not aurait dû être une fermeture propre.

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

Le problème que j'avais d'abord utilise withCriteria était que je voulais tester cela comme un test unitaire, qui fonctionne très bien avec les trouveurs dynamiques, mais pas avec l'API de critères (pour autant que je peux dire).

(Je vais laisser ce sans réponse pendant une journée pour voir si quelqu'un a une meilleure solution, sinon j'accepterai ma réponse)