拯救儿童和父亲不会看到他们

时间:2012-04-24 09:56:44

标签: java-ee servlets jpa ejb jpa-2.0

我有一个类别,有很多像这样的讨论:

@OneToMany(mappedBy="category", fetch= FetchType.EAGER)
List<Discussion> discussions =  new ArrayList<Discussion>();

并使用

保存新讨论
Discussion discussion = new Discussion();
discussion.setCategory(category);
discussion.setTitle(text);
discussionFacade.create(discussion);

通过调用category.getDiscussions();我没有看到新的(直到我重新部署)。 什么是最好的方法?我不想创建一个方法来添加关于类别的讨论(例如category.addDiscussion(讨论)。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

在处理双向关联时,你应该编写一些方便的方法来实际设置两端的关联。

在持久化被视为拥有方的实体之后,底层JPA提供程序将确定它是否必须持久保存关联实体(取决于CASCADING配置),但默认情况下,实体(在您的情况下,是Discussion实例)被管理通过持久化上下文但不从DB刷新。所以,这是一种正常行为。

答案 1 :(得分:1)

在您从数据库中refresh()实体之前,不会更新列表。但是,您不需要单独的方法,请使用add

ArrayList方法
discussions.add(discussion);