在Grails中查询一对多关系中的项列表

时间:2012-01-27 05:28:19

标签: hibernate grails gorm

如果我有一个名为Artist的课程,它有很多歌曲:

class Artist {
    String name
    static hasMany = [songs : Song]
}

class Song {
    String title
    Integer duration
}

我想知道哪些艺术家唱了一个标题列表。例如,我想知道唱HelloMy LoveYesterday(一个字符串数组)的艺术家。这样做的最佳方式是什么?

我尝试使用criteria和findAll,但无法确定哪种方式最好。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这个HQL会起作用:

def artists = Artist.executeQuery(
   'select distinct a from Artist a join a.songs song where song.title in (:titles)',
   [titles: ['Hello', 'My Love', 'Yesterday']])

它将返回艺术家列表,但如果只有一个结果,您可以将其作为artists[0]