我有这样的json:
"relatedCollection": [
{
id:1,
name: "something",
country: {
id:1
}
},
{
id:2,
name: "something 2",
country: {
id:1
}
}
]
数据库中存在具有共同国家/地区的两个相关项目。如果我使用JMSserializer进行反序列化,并且它会创建COUNTRY实体的两个不同实例。
当你应用合并原则时,适当地将国家设置为"某事",但不要设置为"某物2"。所以保存后的结果是:
"relatedCollection": [
{
id:1,
name: "something",
country: {
id:1
}
},
{
id:2,
name: "something 2",
country: null
}
]
对于学说来说,有两个不同的实体被称为国家,它们是独立的。教义把第一个附加起来,适当地保存它,但不能把第二个附加起来。
只有当合并具有相同相关实体id的集合时,关系ManyToOne才会发生这种情况。如果你保存国家1和国家2,没有重复的国家,所以保存财产。
有什么解决方案吗?
JMS序列化程序只进行对象反序列化,它不为您处理条令对象。
你必须进行任何类型的合并,级联合并,例如
http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/working-with-associations.html#transitive-持久级联操作
您可以编写一个反序列化Listener\Subscriber来自动合并