【发布时间】:2012-09-06 05:56:17
【问题描述】:
我有一个培训领域类
class Training {
String type
Date createdOn
Date modifiedOn
static belongsTo = [course: Course]
static hasMany = [attachments: Attachment]
}
我有课程领域类
class Course {
String name
static hasMany = [trainings: Training, tracks: Track]
static belongsTo = Track
}
和跟踪域类
class Track {
String name
}
现在我有一个过滤器(它是 gsp 页面,它将 id 作为参数发送到控件),它根据课程和轨迹选择培训
现在说 params.courseId = 1 和 3
所以我写了查询
def query = "FROM Training AS t WHERE t.course.id IN (1,3)"
trainingList = Training.findAll(query)
这是正确的,我得到了想要的输出。
现在当我说我有轨道 ID 时,params.trackId = 1,2
def query = "FROM Training AS t WHERE t.course.tracks.id IN (1,2)"
trainingList = Training.findAll(query)
这是行不通的..如何在我有上述关联的地方编写正确的查询。
【问题讨论】:
-
为什么不使用“select t from Course c join c.trainings t where c.id in (1,2)”。在此处查看示例grails.asia/grails-hql-join-examples
标签: hibernate grails groovy hql grails-orm