我在我的模型兩類:貢獻(提交)和版本(版本化對象在提交)。貢獻有許多版本和版本屬於貢獻。Grails的2.4.4增加了項目兩次,一個一對多的關係
當我「犯」的新版本,它創造了新的貢獻,新版本和contribution.addToVersions(版本)。這確實是這樣的:
1. contribution = new Contribution(...)
2. newversion = new Version(contribution: contribution, ...)
3..9. ...
10. contribution.addToVersion(newversion)
如果以前的版本存在相同的對象,我做的:(這正好在...以前snipet的)
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行。版本再次添加到該集合,所以我最終在貢獻中重複項目。版本。
任何想法爲什麼會發生這種情況?爲什麼保存另一個版本的實例會影響新版本與新貢獻的關係?
我的解決方法是隻需要執行addToVersions如果沒有以前的版本,但我想知道如果這實際上是一個Grails錯誤buecause它並沒有多大意義。