2016-04-11 4 views
0

Я работаю с приложением Grails. Я использую плагин безопасности Apache Shiro для моего приложения grails. Я пытаюсь использовать findBy запрос на мой класс User с Или и И Состояние, но оно дает мне ошибку.Grails findBy не работает с комбинацией Or/And Condition

Мой домен Класс

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) 
    }} 

Я выполнил следующий запрос:

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

Я получаю следующее сообщение об ошибке:

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

Но если я выполнить запрос только с Или conditio n, тогда он отлично работает.

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

Любой, пожалуйста, помогите мне, что случилось с моим состоянием, когда я использовал Или и И состояние с findBy?

ответ

5
+0

Благодарим за предложение. Я знаю критерии или запрос HQL, но я хочу достичь этого путем findBy ******** –

+0

Это было не предложение, это была ссылка на документы, показывающие, что вы не можете делать то, что хотите, с помощью динамических искателей , Первоначально у вас может быть только один или два атрибута с одним и тем же или одним. Когда это ограничение было удалено, было решено, что вы можете использовать все 'And' или все' Or', потому что нет возможности группировать или использовать круглые скобки. Если вам нужны более сложные запросы, используйте другой подход к запросу. –

Смежные вопросы