次のようなエンティティがあります。
@Entity
public class Directory extends Node
{
@OneToMany(cascade= CascadeType.ALL,fetch= FetchType.EAGER)
private List<Node> nodes = new ArrayList<Node>();
}
マッピングは単方向です。
FethType.EAGER を使用すると、カスケード オプションが無効になります。このコードは、熱心なオプションがない場合、両方のエンティティを正常に保存します。ここで何が問題なのですか?
public void addDirectory(String name, long directoryId, User owner)
{
Directory parent = entityManager.find(Directory.class, directoryId);
Directory dir = new Directory(name,owner);
parent.add(dir);
owner.incrementRevision();
entityManager.merge(owner);
}
parent.add() はエンティティをコレクションに追加するだけです。
public boolean add(Node e)
{
return nodes.add(e);
}