JPA Merge包括儿童

时间:2012-04-25 12:05:25

标签: java jpa merge persistence

我有一个包含地址列表的实体(Person)。实际上,这个UI只允许每个名称输入一个地址。

用户可以创建Person,然后添加地址。在数据库中,我有一个人行和一个地址行。然后,用户可以通过UI更新地址。我在实体管理器上调用merge,以便使用同一个人。问题是地址未合并但添加了新行。因此我有一个人行和两个地址行。只有第二个地址行有效。

这段关系的代码是:

@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, mappedBy = "person")
@OrderBy("id asc")
private List<Address> addresses;

我可以添加任何注释来强制孩子合并吗?或者我必须自己手动执行此操作?

理想情况下,在上面的场景中,我会在Person表中有一行,在地址表中有一行。

由于

1 个答案:

答案 0 :(得分:2)

如果Id与现有对象匹配,

merge()将合并到现有对象中。确保地址的ID相同。

此外,如果您只有一个地址,为什么使用OneToMany,只需使用OneToOne。