【问题标题】:JPA Merge including childrenJPA 合并,包括子项
【发布时间】:2012-05-06 02:41:21
【问题描述】:

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

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

我对这种关系的代码是:

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

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

理想情况下,在上面的场景中,我会在 Person 表中保留一行,在 address 表中保留一行。

谢谢

【问题讨论】:

    标签: java jpa merge persistence


    【解决方案1】:
    如果 Id 与现有对象匹配,

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

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

    【讨论】:

    • 嗨詹姆斯,非常感谢。通过设置地址 ID,它可以正确合并。目前我们是一对多的,因为 UI 处于第一阶段。它最终也会在那里建立一对多的关系。谢谢
    猜你喜欢
    • 2022-01-21
    • 2012-11-26
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多