У меня двунаправленное самостоятельное объединение @OneToMany с сущностью JPA 2.0, и я обнаружил, что мне необходимо сохранить обе стороны отношения, чтобы изменения отразились в контексте постоянства. В этой ситуации я объединяю родителя и сохраняю ребенка.
Я вручную поддерживаю обе стороны отношений, добавляя их в дочернюю коллекцию при установке родителя. Я думал, что этого будет достаточно, и что мне не придется настаивать на обеих сторонах.
Правильно ли это поведение или я что-то не так делаю? Я пытался установить различные комбинации параметров каскада по обе стороны отношений, но безрезультатно.
@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
}