【问题标题】:javax.persistence one to many - how does it work?javax.persistence 一对多 - 它是如何工作的?
【发布时间】:2011-01-07 23:55:38
【问题描述】:

假设我有 2 个用户和消息实体。用户有一个名为“messages”的字段,其中包含一个消息列表并带有“@manyToOne”注释,而 Message 有一个名为“owner”的字段,如下所示:

用户:

@实体
类用户{
...
@OneToMany(mappedBy = “所有者”,级联 = CascadeType.ALL)
私人列表消息;
...

}


消息:

@实体
课堂留言{
...
@ManyToOne(fetch = FetchType.LAZY)
私人用户所有者;
...
}

我的问题 - 添加新消息并将所有者设置为特定用户时,持久性是否知道将另一个元素添加到用户对象的“消息”列表中?

换句话说:在创建消息并设置“所有者”时 - 相应的用户“消息”列表是否会自动增加一?

  • 我很高兴看到一些代码示例。网络上充满了难以理解的复杂示例...

【问题讨论】:

    标签: java jpa persistence entity one-to-many


    【解决方案1】:

    不,要编写严格正确的代码,您需要在内存中维护双方或双向关系。由于设置属性,它不会自动将元素添加到其他地方的集合中。

    如果您从数据库刷新用户或以其他方式重新加载它,新消息就会出现,但这在具有 L2 缓存的系统中仍然不完全安全。您应该始终保持关系的双方以获得最大的可移植性。

    这样的事情在您的用户实体上并不少见:

    public Message addMessage(Message message) {
      //null checks and duplicate checks omitted
      messages.add(message);
      message.setOwner(this);
      return message;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多