Grails查找具有多对多关系的域对象,并将列表作为参数

时间:2013-12-11 22:00:34

标签: hibernate grails gorm criteria grails-2.0

我有一个简单的类歌,我可以将一些标签归于其中:

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

有没有有效的方法来执行此操作?

2 个答案:

答案 0 :(得分:0)

应该可以使用带有“in”查询的条件:

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

答案 1 :(得分:0)

动态查找器怎么样?

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