我正在尝试在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 Tree { String name Level rootLevel static hasMany = [levels: Level] static mappedBy = [rootLevel: "parentTree", levels: "owningTree"] static constraints = {rootLevel(nullable: true)} }
和
class Level { String name Tree parentTree Tree owningTree Level parentLevel Set<Level> subLevels static belongsTo = [owningTree: Tree, parentLevel: Level] static hasMany = [subLevels: Level] static mappedBy = [parentTree: "rootLevel", owningTree: "levels", subLevels: "parentLevel"] static constraints = { parentTree(nullable: true) parentLevel(nullable: true) } }
我错过了Tree和Level之间的两个关系(owningTree和parentTree)以及一些mappingBy配置来帮助hibernate。