2013-12-11 19 views
0

我有一個簡單的類歌曲,對此我會將部分標籤:Grails中找到許多域對象一對多的關係,與列表作爲參數

class Song { 
    String title 
    static hasMany = [tags:Tag] 
} 

的話,我想能夠找到具有標籤指定列表中的所有歌曲,例如,這將是這樣的:

List<Song> results = Song.findAll("where tags contains ?", [myTagList]); 

舉例來說,如果我有:

a Song S1 with tags T1 
a Song S2 with tags T1 T2 T3 
a Song S3 with tags T1 T3 
a Song S4 with tags T1 T2 T3 T4 

然後我執行我的查詢myTagList containing T1, T2, T3,然後該呼叫將返回S2 and S4

有沒有執行此任何有效的方法?

回答

0

它應該是可以使用的標準與「在」查詢:

Song.createCriteria().list{ 
    "in"("tags",myTagList) 
} 
+0

你知道這個調用的複雜性是什麼嗎?例如,如果我有幾千首歌曲,我想要避免那些抓住歌曲整個列表的電話,然後迭代它們以找到匹配。 –

+0

對不起,我一直在嘗試做更多的研究,但是這應該返回給你一個標籤匹配的歌曲列表,使用不含任何grails迭代的sql語句。 – bschipp

+0

你有沒有試過你的解決方案?也許我做了錯誤的事情,但我試圖在我身邊,它顯然不工作。所期望的是一個簡單的類屬性(不應該是一個列表)作爲第一個參數,以及我們想要查找屬性的列表。在我的情況,這是完全相反的(我希望「標籤」包含myTagList),在兩個參數列表中。 來自Grails文檔的示例:'in'(「age」,[18..65]) –

0

什麼動態取景器?

List<Song> results = Song.findAllByTagsInList(myTagList); 
+0

它適用於簡單的參數,如Song.findAllByTitleInList([「title1」,「title2」]),但是當我用findAllByTagsInList調用它時,它崩潰:「Class:java.sql.SQLException,Message:No value specified for參數1「 –

相關問題