[英]Grails domain Named query for a list of string
我有一個簡單的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
}
現在我有一個要求,我有一個Genres標題列表,我需要檢索所有在其中一個類型中至少有一本書的作者。 我需要在Author類中編寫一個命名查詢。 我嘗試了以下查詢
hasGenre {cl ->
'book.genre.title' in cl
}
我傳遞一個字符串列表如下
Author.hasGenre(genereTitleStringArray)
但這似乎並沒有奏效。 我有一些其他直截了當的命名查詢工作正常。 因此,當我檢索包含“hasGenere”時,這似乎不會影響檢索。 我究竟做錯了什么? 我對這個領域很新
提前致謝
你一直在使用list()方法嗎? 如果不是,則必須使用它從namedQuery獲取實體,因為namedQuery返回NamedCriteriaProxy.Class :
author = Author.hasGenre(genereTitleStringArray).list()
對我來說這樣的代碼工作得很好,在我的作者中我有:
static namedQueries = {
hasGenre { cl->
'book.genres.title' in cl
}
}
預訂一樣。 怎么樣Genres你還必須添加依賴一對一(如果你沒有):
static belongsTo = [book: Book]
或一對多:
static hasMany= [book: Book]
對我來說,目前的代碼運作良好,祝你好運。
PS 我正在使用grails 2.3.11
正確的語法是
static namedQueries = {
hasGenre {genreName ->
book{
genres {
eq 'title' genreName
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.