这是我的域类:
class Category {
String name
static hasMany = [subCategories: Category]
static belongsTo = [parentCategory: Category]
static mapping = {
subCategories joinTable: false, column: "parent_id"
}
static constraints = {
parentCategory nullable: true
}}
类别是一个域类,可以自我引用父项和子项列表。
现在我想要这样的东西:给定父类别ID,我想要一个属于这个id的所有子类别的列表。 (注意:不是直接的孩子,所有的孩子都是id)
例如,id 1有子项2和3,而2有子4和5。
鉴于我从客户端获得了类别ID 1,我想要一个id为2,3,4,5
的子类别利用Groovy,实现它的最佳代码是什么?
答案 0 :(得分:4)
未经测试的代码,但可能会让您朝着正确的方向前进。可能有一种“更加时髦”的方法,但我不确定。
def findAllChildren(category, results = []) {
category.subCategories.each { child ->
results << child
findAllChildren(child, results)
}
}
def someOtherMethod() {
def allChildren = []
findAllChildren(parentCategory, allChildren)
}