gpt4 book ai didi

javax.persistence 一对多 - 它是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 07:35:12 25 4
gpt4 key购买 nike

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

用户:

@Entity
Class User{
...
@OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
private List messages;
...

}


留言:

@Entity
Class Message{
...
@ManyToOne(fetch = FetchType.LAZY)
private User owner;
...
}

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

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

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

最佳答案

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

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

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

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

关于javax.persistence 一对多 - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4631378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com