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

时间:2017-07-30 21:14:55

标签: grails insert self-reference

我有一个像这样的自引用域类:

class Person {
   String name
   Person father
   Person mother
}

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

我有一个服务,可以从.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

我想整个事情都与级联保存有关,但我无法真正理解这个问题,而且我不愿意在代码中留下这么难理解的解决方案。

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

1 个答案:

答案 0 :(得分:0)

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