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 之间的某个地方消失了,所以我将把它标记为已回答并已解决。
我有一个自引用域 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 之间的某个地方消失了,所以我将把它标记为已回答并已解决。