2016-04-11 18 views
0

Ich arbeite mit Grails-Anwendung. Ich benutze Apache Shiro Sicherheits-Plugin für meine Grails-Anwendung. Ich versuche findBy Abfrage auf meiner User Domain-Klasse mit oder und Und Zustand, aber es gibt mir einen Fehler.Grails findBy funktioniert nicht mit der Kombination von/Und Bedingung

My Domain Klasse

class ShiroUser { 
     String firstName 
     String lastName 
     String username 
     String email 
     String passwordHash 
     String userStatus 

     static hasMany = [ roles: ShiroRole, permissions: String ] 

     static constraints = { 
      username(nullable: false, blank: false, unique: true) 
      email(nullable: false, blank: false, email: true,unique: true) 
    }} 

Ich habe folgende Abfrage ausgeführt:

ShiroUser.findByUsernameOrEmailAndUserStatus(params?.username,params?.username,'Active') 

ich folgende Fehlermeldung erhalten:

Message: No property found for name [usernameOrEmail] for class [class com.chatportal.ShiroUser] 

Aber wenn ich ausführen Abfrage mit nur Or conditio Dann funktioniert es gut.

ShiroUser.findByUsernameOrEmail(params?.username,params?.username) 

Wer mir bitte helfen, dass das, was mit meinem Zustand falsch ist, wenn ich verwendet oder und Und Zustand mit findBy?

Antwort

5
+0

Danke für den Vorschlag. Ich kenne die Kriterien oder HQL-Abfrage, aber ich möchte es erreichen durch findBy ******** –

+0

Es war kein Vorschlag, es war ein Link zu den Dokumenten, die Ihnen zeigen, dass Sie nicht tun können, was Sie mit dynamischen Findern tun möchten . Ursprünglich konnten Sie nur ein oder zwei Attribute mit einem "And" oder einem "Or" haben. Wenn diese Einschränkung aufgehoben wurde, wurde entschieden, dass Sie nur alle "Und" oder alle "Oder" verwenden können, da es keine Möglichkeit gibt, Klammern zu gruppieren oder zu verwenden. Wenn Sie komplexere Abfragen benötigen, verwenden Sie einen anderen Abfrageansatz. –