我有一个用户类,用户应该有一个朋友列表。朋友也是用户,所以每个用户都应该有很多朋友,显然每个朋友(用户)也有很多朋友(用户)。
因此,到目前为止,我已经假设了多对多的用户关系。这是我一直使用的代码(使用休眠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。
我非常坚持这一点,所以一些帮助将不胜感激。 非常感谢!
答案 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)的朋友。
希望有所帮助,