假设我们有一个 双向一对多关系 父子之间。
我喜欢模型与 Set 关系的想法,因为它不允许重复的内在性质。
问题:
1) 什么是 正确的 JPA 方式 在这种情况下更新 child ?
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 merge在 EntityManager
.
因此,您需要执行以下步骤:
Child
通过身份证:Child child = entityManager.find(Child.class, childId);
Child
进行更改你就完成了:child.setName(newName);
关于java - 在 JPA @OneToMany 关系中更新 Set 元素的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44004634/