gpt4 book ai didi

java - JPA 一对多/多对多示例

转载 作者:行者123 更新时间:2023-11-29 00:47:41 27 4
gpt4 key购买 nike

我正在使用:

  • hibernate
  • MySQL
  • jBoss

我必须创建一个允许用户建立友谊的应用程序。

我还在设计阶段,我想要这些表:

- User {_id, name, address} 
- Friendship {idUserA, idUserB, date}

为了我的目的,我应该与用户建立相互关系。例如 1 是 2 的 friend ,间接地 2 是 1 的 friend 。所以在我的表中我认为有:

友谊 = {1, 2, ...}

我在问如何模拟这种行为。我读过他的主题:Many-to-many on the same table with additional columns我已经按照这个指令从实体( hibernate 属性)生成数据库表。但是在这个例子中,当我加载我的 friend A 时,我有一个包含 friend B 的列表,而当我加载 B 时,我没有用户 A 进入列表。

我该如何实现这种该死的相互关系?

最佳答案

据我了解这个样本,相互关系并不是隐含的。要从 A->B 和从 B->A 建立友谊关系,您必须将两个条目添加到您的表中,或者您必须实现两个集合并返回两个列表的交集:

@OneToMany(mappedBy="myFriends")
private List<MyFriends> myFriends;

@OneToMany(mappedBy="me")
private List<MyFriends> iAmFriendOf;

...

Set<MyFriends> getFriends() {
Set<MyFriends> friends = new HashSet<MyFriends>();
friends.addAll(myFriends);
friends.addAll(iAmFriendOf);
return friends;
}

关于java - JPA 一对多/多对多示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9926016/

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