2013-01-31 84 views
1

我有一個用戶類,用戶應該有一個朋友列表。朋友也是用戶,所以每個用戶都應該有很多朋友,顯然每個朋友(用戶)也有很多朋友(用戶)。Java持久性與自我的多對多關係

所以一個多對多的用戶關係是我到目前爲止所假設的。這是目前我一直在使用的代碼(與休眠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。

我很堅持這一點,所以一些幫助,將不勝感激。 非常感謝!

回答

2

我建議改變你的數據庫模式是這樣的:

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

哪裏MyUser.id是MYUSER的主鍵,和朋友ID1和ID2的外鍵MyUser.id。

這是一種非常常見的模式,它可以減少將來出現的問題,並且更易於維護。如果朋友數據庫(1,2)中存在元組,則用戶A(w/ID 1)與用戶B(w/ID 2)成爲好友。

希望有幫助,