【问题标题】:Grails: Children of ChildrenGrails:孩子的孩子
【发布时间】:2013-10-12 21:55:06
【问题描述】:

我有一个关于 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 ) ) 或者如果我必须使用更复杂的查询?

最好的问候,

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    这有点困难,因为您没有存储对父对象的反向引用

    类似的东西 - 我自己没有测试过

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

    【讨论】:

    • 感谢詹姆斯的解决方案。经过一些测试,我没有使用您的查询,但我在我的域类中添加了一个反向引用(我认为更简单)。
    【解决方案2】:

    如果 B 有: 静态的 belongsTo = [a:A]

    那么你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 2017-03-06
      • 2013-09-27
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多