Grails GORM Опрос многих сторон ассоциации с использованием HQL - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть отношение один ко многим между курсом и категориями

class Course {

    String code     

    static hasMany = [categories:CourseCategory]
}


Class CourseCategory {

    String name
}

Мне нужно запрашивать курсы на основе списка категорий.Я пробовал запрос

courseInstanceList = Course.findAll("from Course c inner join c.categories cts where cts.id in :categoryIds",[categoryIds:categoryIds])

Но этот запрос возвращает и Courses и CourseCategories - просто интересно, как создать запрос, чтобы просто вернуть курсы?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2014

Почти три года назад ...)

В любом случае вот ответ:

courseInstanceList = Course.findAll("SELECT distinct c from Course c inner join c.categories cts where cts.id in :categoryIds",[categoryIds:categoryIds])

, чтобы получить только категории:

courseInstanceList = Course.findAll("SELECT cts from Course c inner join c.categories cts where cts.id in :categoryIds",[categoryIds:categoryIds])
0 голосов
/ 16 февраля 2012

Вы можете использовать createCriteria метод:

def c = Course.createCriteria()
println (c.listDistinct {
    categories {
        'in' 'id', [1L, 2L, 3L]
    }
})
...