通过使用status
attribut值并从ClassA实例开始,从ClassD实例获取name
attribut值的最有效解决方案是什么?
我可以在每个列表中使用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]
}
答案 0 :(得分: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,请删除投影,然后根据需要进行处理。