0

通过获取属性值并从 ClassA 实例开始从statusClassD 实例获取属性值的最有效解决方案是什么?name

我可以在每个列表中使用 on 循环,但我认为使用创建标准有更好的解决方案

Class ClassA {
    static hasMany = [CLassBList:ClassB]
}


Class ClassB {
   static hasMany = [CLassCList:ClassC]
   static belongsTo = [ClassA]
}


Class ClassC {
    static hasMany = [CLassDList:ClassD]
    static belongsTo = [ClassB]
 }


Class ClassD {
    String name
    String status
    static belongsTo = [ClassC]
}
4

1 回答 1

1

我假设(尽管您的代码没有提及)您在 ClassA 上有一些要搜索的条件,那么您可以使用这样的 createCriteria :

def c = ClassD.createCriteria()
def results = c.list () {
  projections { property('status') }
  classC {
    classB {
      classA {
        eq('classAProperty', someClassAValue)
      }
    }
  }
}

如果您只期望 1 个结果,请使用 .get() 而不是 .list(),那么您可能还需要一个 order() 子句。

如果您希望返回整个 ClassD,请删除投影,然后按您认为合适的方式处理。

于 2015-09-16T09:04:26.163 回答