Запрос списка элементов из отношения «один ко многим» в Grails - PullRequest
1 голос
/ 27 января 2012

Если у меня есть класс с именем Artist, в котором много песен:

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

class Song {
    String title
    Integer duration
}

Я хочу знать, какие исполнители пели список названий. Например, я хочу знать артистов, которые пели Hello, My Love и Yesterday (массив строк). Каков наилучший способ сделать это?

Я попытался использовать критерий и найти все, но не могу понять, какой из них лучший. Есть идеи?

1 Ответ

3 голосов
/ 27 января 2012

Этот 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]

...