有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPA合并,包括子级

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

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

我的关系代码是:

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

我可以添加任何注释来强制合并子项吗?还是我必须自己手动完成

理想情况下,在上面的场景中,我将在Person表中有一行,在address表中有一行

谢谢


共 (1) 个答案

  1. # 1 楼答案

    如果Id与现有对象匹配,merge()将合并到现有对象中。确保地址的Id相同

    另外,如果你只有一个地址,为什么要用OneToMany,就用OneToOne吧