У меня есть два класса в моей модели: Contribution (commit) и Version (объект с версией в commit). Contribution hasMany Version и Version принадлежит To Contribution.Grails 2.4.4 добавляет элемент дважды к отношениям «один ко многим»
Когда я «фиксирую» новую версию, он создает новый вклад, новую версию и вклад .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. добавляет новую версию к вкладу .versions (очень странно), а затем в строке 10. версия добавляется снова в эту коллекцию, поэтому я получаю дублированные элементы в качестве вклада. версии.
Любые идеи, почему это происходит? Почему сохранение другого экземпляра версии влияет на отношения новой версии и нового вклада?
Мое обходное решение состояло в том, чтобы просто выполнить addToVersions, если нет предыдущих версий, но я хочу знать, является ли это на самом деле ошибкой Grails, потому что это не имеет большого смысла.