从ClassD实例获取status
属性值并从ClassA实例开始获取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]
}
最佳答案
假设(尽管您的代码未提及)(假设您对ClassA有一些要搜索的条件),那么可以使用如下的createCriteria:
def c = ClassD.createCriteria()
def results = c.list () {
projections { property('status') }
classC {
classB {
classA {
eq('classAProperty', someClassAValue)
}
}
}
}
如果只期望1个结果,请使用.get()而不是.list(),那么您可能还需要order()子句。
如果要返回整个ClassD,请除去这些凸起,然后视情况进行处理。
关于hibernate - 在多个关联上使用创建条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602855/