Java持久性与自我有很多很多关系

时间:2013-01-31 23:53:47

标签: java database annotations many-to-many persistence

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

因此,到目前为止,我已经假设了多对多的用户关系。这是我一直使用的代码(使用休眠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。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

希望有所帮助,