【发布时间】:2015-06-07 08:28:28
【问题描述】:
我的模型中有两个类:Contribution(提交)和 Version(提交中的版本化对象)。 Contribution hasMany Version 和 Version belongsTo Contribution。
当我“提交”一个新版本时,它会创建一个新贡献,一个新版本和一个contribution.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 行。将新版本添加到 contribution.versions(非常奇怪),然后在第 10 行。版本再次添加到该集合中,所以我最终在contribution.versions 中有重复的项目。
任何想法为什么会发生这种情况?为什么保存另一个 Version 实例会影响新版本和新贡献的关系?
如果没有以前的版本,我的解决方法是只执行 addToVersions,但我想知道这是否真的是 Grails 错误,因为它没有多大意义。
【问题讨论】:
标签: grails grails-orm