【问题标题】:Saving children and father doesn't see them救孩子,父亲看不到
【发布时间】:2012-05-04 22:55:31
【问题描述】:

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

@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(discussion)。

感谢您的帮助

【问题讨论】:

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


    【解决方案1】:

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

    在持久化被视为拥有方的实体后,底层 JPA 提供程序将确定它是否必须持久化关联实体(取决于 CASCADING 配置),但默认情况下,实体(在您的情况下为 Discussion 实例)是托管的通过持久性上下文但未从数据库刷新。所以,这是正常现象。

    【讨论】:

    • 谢谢,不知道不能直接持久化子对象,还以为会自动更新上层对象(本例为Category)
    【解决方案2】:

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

    discussions.add(discussion);
    

    【讨论】:

      猜你喜欢
      • 2013-09-15
      • 2023-04-08
      • 2019-02-23
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 2017-09-04
      • 2017-12-02
      • 1970-01-01
      相关资源
      最近更新 更多