Grails域命名查询字符串列表

Grails域命名查询字符串列表,grails,gorm,named-query,domain-object,Grails,Gorm,Named Query,Domain Object,我有一个简单的Grails应用程序。我的域名如下 class Author implements Serializable { .... static hasMany = [ book : Book ] } class Book implements Serializable{ Author author Genres genres static belongsTo = [author: Author , genre: Genres ]

我有一个简单的Grails应用程序。我的域名如下

class Author implements Serializable {
   ....
   static hasMany = [
        book : Book 
   ]
}

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

}
现在我有一个要求,我有一个类型的标题列表,我需要检索所有的作者谁至少有一本书在这些类型之一。我需要在Author类中编写一个命名查询。我尝试了以下查询

hasGenre {cl ->
    'book.genre.title' in cl
}
我传递一个字符串列表,如下所示

 Author.hasGenre(genereTitleStringArray)
但这似乎不起作用。我还有一些其他简单的命名查询,它们工作得很好。因此,当我检索包含“hasGenere”的内容时,这似乎不会影响检索。我做错了什么?我对这个地区很陌生


提前感谢

正确的语法是

 static namedQueries = {
       hasGenre {genreName -> 
                book{
                   genres {  
                       eq 'title' genreName 
               } 
           }
       }
   }

您是否一直在使用list()方法?如果否,则必须使用它从namedQuery获取实体,因为namedQuery返回NamedCriteriaProxy.Class

author = Author.hasGenre(genereTitleStringArray).list()
对我来说,这样的代码运行良好,在我的作者中,我有:

static namedQueries = {
    hasGenre { cl->
        'book.genres.title' in cl
    }
}
同样的书。关于类型,您还必须添加依赖项1(如果您没有):

或一对多:

static hasMany= [book: Book]
对我来说,当前的代码运行良好,祝你好运


另外,我使用的是grails 2.3.11,它包含在Author Domain中?是的,在Author Domain中,在static namedQueries={Book通过一个懒惰的单端关联与Genere关联。这是因为我不希望在检索Genere对象时检索书籍。我使用的是grails 2.2.4。如果我使用查询
Author.hasgree(GenereTleteStringArray).list()
,然后检索所有记录。HasGene方法似乎不会影响检索。我刚刚意识到我在Author中将标签定义为
Set book
,将其更改为
Set book
,并开始工作。感谢您的帮助
static hasMany= [book: Book]