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?
Danke für den Vorschlag. Ich kenne die Kriterien oder HQL-Abfrage, aber ich möchte es erreichen durch findBy ******** –
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. –