2012-01-29 8 views
0

J'ai créé une classe de rôle qui ne contient qu'une seule autorité variable:Méthode non trouvée - findOrCreateWhere - Gorm

class Role { 
    String authority 
} 

Maintenant, lorsque je tente d'enregistrer de nouvelles valeurs dans BootStrap.groovy (Grails app) Je fais cela :

def adminRole = Role.findOrCreateWhere(authority: "ROLE_ADMIN"); 

Quand je courais ce que je reçois l'exception suivante:

2012-01-29 23:35:03,067 [Thread-9] ERROR org.codehaus.groovy.grails.web.context.GrailsContextLoader - Error executing bootstraps: groovy.lang.MissingMethodException: No signature of method: org.rango.auth.Role.findOrCreateWhere() is applicable for argument types:() values: [] 
Possible solutions: findOrCreateWhere(java.util.Map), findOrSaveWhere(java.util.Map) 
org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: org.rango.auth.Role.findOrCreateWhere() is applicable for argument types:() values: [] 
Possible solutions: findOrCreateWhere(java.util.Map), findOrSaveWhere(java.util.Map) 
    at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:290) 
    at grails.util.Environment.executeForEnvironment(Environment.java:283) 
    at grails.util.Environment.executeForCurrentEnvironment(Environment.java:259) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: groovy.lang.MissingMethodException: No signature of method: org.rango.auth.Role.findOrCreateWhere() is applicable for argument types:() values: [] 
Possible solutions: findOrCreateWhere(java.util.Map), findOrSaveWhere(java.util.Map) 
    at BootStrap$_closure1.doCall(BootStrap.groovy:16) 
    ... 8 more 

Quel est le problème avec mon code?

Merci!

+0

Votre classe 'Role' a-t-elle été créée par Spring Security? Si non, a-t-il été créé dans le sous-dossier 'grails-app/domain'? Il va seulement avoir des fonctionnalités de classe de domaine si c'est dans ce dossier. Avez-vous essayé d'exécuter «grails propre» en premier? – OverZealous

Répondre

-1

essayez ceci: def adminRole = Role.findOrCreateWhere ([autorité: "ROLE_ADMIN"]);

+0

C'est exactement la même chose dans Groovy. 'method (foo: bar)' est juste du sucre syntaxique pour passer une carte en tant que premier argument. – OverZealous

Questions connexes