Grails 自引用域 class 令人惊讶的保存结果

Grails self referencing domain class surprising save result

我有一个自引用域 class 是这样的:

class Person {
   String name
   Person father
   Person mother
}

我对父亲或母亲没有 hasMany 或其他限制

我有一项服务可以从 .csv 文件中插入新条目,如下所示

Person father = Person.findBy(newPersonFatherName)
Person mother = Person.findBy(newPersonMotherName)
Person newPerson = new Person(
    name: newPersonName,
    father: father,
    mother: mother)
newPerson.save()

执行此操作时发生的情况是外祖母和祖父都设置为与 newPerson 相同的实例。

我可以通过在 save() 之前插入以下两行来解决这个问题

Person pgf = father.father
Person pgm = father.mother
Person mgf = mother.father
Person mgm = mother.mother

我想整个事情在某种程度上与级联保存有关,但我无法真正理解这个问题,我不愿意在代码中留下这样一个难以理解的解决方案。

有人可以帮忙吗?提前致谢!

似乎这个问题已经在 Grails 2.5.5 和 Grails 3.3 之间的某个地方消失了,所以我将把它标记为已回答并已解决。