Надо упорствовать обе стороны самостоятельного присоединения @OneToMany - PullRequest
0 голосов
/ 16 июня 2011

У меня двунаправленное самостоятельное объединение @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
    }
...