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