Grails命名查询不使用“in”语句

我有一个Grails应用程序(2.2.4).我在域类中看起来像这样

class Author implements Serializable {
    ....
  static hasMany = [
    book : Book 
  ]
  static namedQueries = {
      hasGenre {genreNameList -> 
            book{
               genres {  
                   'title' in genreNameList 
           } 
       }
   }
  }
}

class Book implements Serializable{

    Author author
    Genres genres
    static belongsTo = [author: Author , genre: Genres ]
       static mapping = {
       .....
        author lazy: false
       }
}

class Genres implements Serializable{

    String title

 }

如果我按如下所示运行查询,则会检索所有值,而不仅仅是具有genereNameList中至少一个带genere的书的作者

String comaSeperatedGenereName = "genere1,genere2"
def genereNameList = comaSeperatedGenereName.split(",")
Author.hasGenre(genereNameList)

但是,如果我像下面这样更改namedQuery,

      hasGenre {genreName -> 
            book{
               genres {  
                   eq 'title' , genreName 
           } 
       }

如果我传递一个像下面的字符串

Author.hasGenre('genere1')

这按预期工作.有什么我想念的吗?

提前致谢

最佳答案 运算符有一个groovy,我怀疑你的标准不是在运算符中获得groovy.

尝试将代码更改为

  static namedQueries = {
      hasGenre {genreNameList -> 
            book{
               genres {  
              'in'  'title', genreNameList 
           } 
       }
   }
  }
点赞