gpt4 book ai didi

java - 在 JPA @OneToMany 关系中更新 Set 元素的正确方法?

转载 作者:行者123 更新时间:2023-12-01 14:28:58 25 4
gpt4 key购买 nike

假设我们有一个 双向一对多关系 父子之间。

我喜欢模型与 Set 关系的想法,因为它不允许重复的内在性质。

问题:
1) 什么是 正确的 JPA 方式 在这种情况下更新 child ?

  • 查询 Parent 并将更新的 Child 传递给它?
  • 直接查询 Child 并调用它的 setter?

  • 2) 有一些 性能 优点还是缺点?
    @Entity
    public class Parent extends AbstractPersistable<Long> {

    @OneToMany(cascade = CascadeType.ALL, ... )
    private Set<Child> children = new HashSet();

    public void addChild( Child child ) { ... }
    public void removeChild( Child child ) { ... }

    // non-anemic domain model ?
    public void updateChild( Child child ) {
    // how to update the element in the Set?
    }
    }

    更新:
    如何正确编写更新方法?由于 Java 中的 Sets 没有 get 方法?

    最佳答案

    更新 Child ,不需要操作父集合。

    感谢 dirty checking mechanism ,一旦Child在当前运行的 Persistence Context 中进行管理,每个更改都会自动选取并同步到数据库。

    这就是您没有 update 的原因JPA中的方法。你只有persist or mergeEntityManager .

    因此,您需要执行以下步骤:

  • 您加载了 Child通过身份证:
    Child child = entityManager.find(Child.class, childId);
  • Child 进行更改你就完成了:
    child.setName(newName);
  • 关于java - 在 JPA @OneToMany 关系中更新 Set 元素的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44004634/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com