gpt4 book ai didi

java - GORM(grails)中的树结构

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:50:33 24 4
gpt4 key购买 nike

我正在尝试在 GORM 中定义树结构。这是我的模型:

class Tree {
String name
Level rootLevel

static hasOne = [rootLevel: Level]
static hasMany = [levels: Level]
static mappedBy = [levels:"parentTree"]
}

class Level {
String name
Tree parentTree
Level parentLevel
Set<Level> subLevels

static belongsTo = [parentTree: Tree]
static hasMany = [subLevels: Level]
}

插入似乎工作正常,但当我无法加载具有多个级别和子级别的树时。我想我错过了关系中的一些东西:- Tree 应该有对 rootLevel 的引用(以及可选的所有子级别)- 一个关卡应该有一个对其父关卡、子关卡和全局父树的引用

你能指出正确的方向来获得这样的树结构吗?谢谢

最佳答案

我不喜欢你的树结构,所以我创建了自己的 :)

Class TreeNode {
String name
TreeNode parent

static hasMany = [children: TreeNode]

//returns the root node, and by extension, the entire tree!
TreeNode getRootNode(){
if(parent){
//if parent is not null then by definition this node is a child node of the tree.
return parent.getRootNode()
}else{
//if parent is null then by definition it is the root node.
return this
}
}

//you might not need this function, but ill add it as it is common in tree structures
boolean isLeaf(){
//determines if this node is a leaf node. a leaf is a node with zero childrens
return children.isEmpty()
}
}

至于确保加载所有树节点,您始终可以对每个树节点(包括父节点和子节点)使用急切/非延迟获取。但是,如果您的树结构非常大,可能会降低性能......

至于急切/懒惰的抓取。看看这里:Using lazy property fetching in Grails / Gorm

关于java - GORM(grails)中的树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5880672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com