CascadeType.ALL不适用于FetchType.EAGER

时间:2012-06-20 12:49:43

标签: java hibernate jpa

我有一个这样的实体:

@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);
}

1 个答案:

答案 0 :(得分:0)

也许您应该使用getNodes()。添加而不仅仅是nodes.add,如果某些提供商使用编织来处理您的实体,则可能会遇到问题。