gpt4 book ai didi

grails - 在Grails中建模多对一树

转载 作者:行者123 更新时间:2023-12-02 14:01:41 25 4
gpt4 key购买 nike

我正在尝试对grails中的组织树进行建模。我的作品行之有效,但是我对此有两个疑问。

这是我的“组织”类(class):

class Organization {

String title
Organization parentOrg

static hasMany = [ childOrg: Organization ]

static mappedBy = [
childOrg: 'parentOrg',
parentOrg: 'childOrg'
]

static constraints = {
parentOrg nullable: true
}
}

现在,当我像这样创建一个新的“组织”时:
def newOrg = new Organization(
title: 'New Organization',
parentOrg: oldOrg).save()

一切正常,与 parent 的关系似乎正确建模。

但是,如果我尝试调用 oldOrg.childOrg.each之类的东西,除非我也调用 oldOrg.addToChildOrg(newOrg),否则不会有任何结果。

此外,当我检查生成的表时,对此关系的唯一引用是 parent_org_id表上的 Organization列。

现在,我意识到这是确定 childOrg关系所必需的,但是从调用 oldOrg.addToChildOrg(newOrg)之前到之后,我都没有注意到数据库中的任何更改!

因此,当我在数据库中看不到任何变化时调用 addToChildOrg时,该关系存储在哪里?

另外,添加 childOrg时如何设置此关系以自动创建 parentOrg关系?我认为添加 addToChildOrg时不必调用 parentOrg。应该暗示。

谢谢!

最佳答案

使用hasOne关联将外键引用以一对一的方式存储。

由于您不想每次都添加对方的关系,因此可以创建一个塞特来简化您的工作,例如-

setParentOrg(parentInstance){
this.parentOrg = parentInstance
parentInstance.childOrg = this
}

现在,当您执行 organisationInstance.parentOrg = parentInstance时,将为您调用 setter ,并以您想要的方式建立关系。

关于grails - 在Grails中建模多对一树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598756/

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