簡體   English   中英

Grails domain命名查詢字符串列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM