Grails:儿童的孩子

时间:2013-10-12 21:55:06

标签: grails gorm

我有一个关于GORM和“多重”关系的问题,我在之前的搜索中找不到答案。

假设我们有三个域:

class A {
...
static hasMany = [Bs: B]
}

class B {
...
static belongsTo = A
static hasMany = [Cs: C]
}

class C {
static belongsTo = B
String name
dateCreated date
}

我想知道是否有可能使用类A的对象(类似于C.findAll(....,a:a.id)获取类C的对象列表,按dateCreated排序。 ))或者如果我必须使用更复杂的查询?

致以最诚挚的问候,

2 个答案:

答案 0 :(得分:0)

它有点困难,因为你没有存储父对象的后向引用

像这样 - 我没有自己测试

A.executeQuery("select distinct c from A a join a.bs as b join b.cs as c where a = :a", [a: a])

答案 1 :(得分:0)

如果B有: static belongsTo = [a:A]

然后你可以这样做:

C.withCriteria {
  a{
    eq('id', <a's id here>)
  }
  order('dateCreated', 'desc')
}