我在JPA 2.0实体上有一个双向的@OneToMany自联接,我发现我必须坚持关系的两个方面才能将更改反映在持久化上下文中。在这种情况下,我正在合并父母并坚持孩子。
我通过在设置父级时添加到子集合来手动维护关系的两个方面。我认为这就够了,我不必坚持双方。
这种行为是正确的,还是我做错了什么?我尝试在关系的两边设置级联选项的各种组合无济于事。
@Entity
public class Context extends AbstractEntity implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
@ManyToOne
private Context parent;
@OneToMany(mappedBy = "parent")
private List<Context> children;
@OneToMany
private List<Task> tasks;
private void addChild(Context child) {
this.children.add(child);
}
public void setParent(Context parent) {
this.parent = parent;
this.parent.addChild(this);
}
//Getters and setters
}
//@ManagedBean making data changes
public void createContext() {
context.setParent((Context) selectedNode.getData());
contextFacade.edit(context.getParent());
contextFacade.create(context);
//Display result
}