Grails域命名查询字符串列表



我有一个简单的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
}

传递一个string列表,如下所示

 Author.hasGenre(genereTitleStringArray)

但这似乎不起作用。我还有其他一些直接的命名查询,它们工作得很好。因此,当我检索包括"hasGenere",这似乎并不影响检索。我做错了什么?我对这个领域还不熟悉

Thanks in advance

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

author = Author.hasGenre(genereTitleStringArray).list()

对我来说,这样的代码工作得很好,在我的作者我有:

static namedQueries = {
    hasGenre { cl->
        'book.genres.title' in cl
    }
}

预订相同的。你还必须添加依赖项1 - 1(如果你还没有):

 static belongsTo = [book: Book]

或一对多:

static hasMany= [book: Book]

对我来说,当前的代码运行良好,祝你好运。

注:我使用的是grails 2.3.11

正确的语法应该是

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

相关内容

  • 没有找到相关文章

最新更新