【问题标题】:Grails GORM Querying the many side of an association using HQLGrails GORM 使用 HQL 查询关联的多方面
【发布时间】:2012-02-15 19:38:45
【问题描述】:

我在课程和类别之间有一对多的关系

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 - 只是想知道如何创建一个查询来只返回课程?

【问题讨论】:

    标签: grails hql grails-orm


    【解决方案1】:

    你可以使用createCriteria方法:

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

    【讨论】:

    • 此查询返回具有指定任何类别 ID 的课程。是否可以只返回指定了所有类别 ID 的课程?
    【解决方案2】:

    差不多三年过去了……)

    答案如下:

    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])
    

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多