1

我有一个用户类,用户应该有一个朋友列表。朋友也是用户,所以每个用户都应该有很多朋友,显然每个朋友(用户)也有很多朋友(用户)。

所以到目前为止,我已经假设了用户的多对多关系。这是目前我一直在使用的代码(带有休眠 JPA 注释)

这是我的 MyUser 代码:

@Entity
public class MyUser {

@Id
private String username;
private String userPassword;

@ManyToMany
  @JoinTable(
  name="USR_USR",
  joinColumns={@JoinColumn(name="USR1_ID", referencedColumnName="USERNAME")},
  inverseJoinColumns={@JoinColumn(name="USR2_ID", referencedColumnName="USERNAME")})
private List<MyUser> friends = new ArrayList<MyUser>();

public void setUsername(String username) {
    this.username = username;

public void setUserPassword(String userPassword) {
    this.userPassword = userPassword;
}

public String getUsername() {
    return username;

public String getUserPassword() {
    return userPassword;
}

public void setFriends(List<MyUser> friends) {
    this.friends = friends;
}

public List<MyUser> getFriends() {
    return friends;
}

我正在尝试通过将 USERNAME 列与自身连接来创建第二个表(老实说,这对我来说听起来不太正确。)

所以我试图在我的数据库中创建一个关系,其中每个 MyUser 可以有许多 MyUser。

我非常坚持这一点,所以一些帮助将不胜感激。非常感谢!

4

1 回答 1

2

我建议将您的数据库架构更改为以下内容:

MyUser(id, ....);
Friends(id1, id2);

其中 MyUser.id 是 MyUser 的主键,Friends id1 和 id2 是 MyUser.id 的外键。

这是一种非常常见的模式,将来会给您带来更少的问题,并且更易于维护。如果好友数据库 (1, 2) 中有一个元组,则用户 A (w/ ID 1) 是用户 B (w/ ID 2) 的好友。

希望有帮助,

于 2013-02-01T00:01:39.630 回答