gpt4 book ai didi

grails - Grails 2.4.4将项目两次添加到一对多关系

转载 作者:行者123 更新时间:2023-12-02 16:02:09 24 4
gpt4 key购买 nike

我的模型中有两个类:Contribution(提交)和Version(提交中的版本化对象)。贡献有很多版本,而Version属于贡献。

当我“提交”一个新版本时,它将创建一个新的贡献,一个新版本和贡献.addToVersions(version)。这样做像:

1. contribution = new Contribution(...)
2. newversion = new Version(contribution: contribution, ...)
3..9. ...
10. contribution.addToVersion(newversion)

如果同一对象存在先前版本,则执行以下操作:(这在先前代码段的...中)
3. if (Version.countByUid(newversion.uid) > 0) {
4. prevVersion = Version.findBtUid(newversion.uid)
5. prevVersion.lastVersion = false
6. prevVersion.save() <<<< THIS IS ADDING THE newversion TO contribution.versions
7.
8. newversion.updateVersion() // updates the las part of the uid
9. }

问题是当我收到现有版本的第6行的新版本时,将新版本添加到tribution.versions中(非常奇怪),然后在第10行中,将该版本再次添加到该集合中,所以最终得到版本中的重复项。

任何想法为什么会这样?为什么保存版本的另一个实例会影响新版本和新贡献的关系?

我的解决方法是,如果没有以前的版本,则只执行addToVersions,但是我想知道这是否实际上是Grails错误,因为它没有多大意义。

最佳答案

问题是Version和Contribution之间的关系是双向的,因此当我设置version.contribution并保存版本时,Grails会自动将版本添加到tribution.versions列表中。

因此,如果我也进行了tribution.addToVersions,我最终会将版本两次添加到contribution.version列表中。

可能的解决方案是:不执行addToVersions或使关系单向。

关于grails - Grails 2.4.4将项目两次添加到一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418121/

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