Java持久性与自我的多对多关系
我有一个用户类,用户应该有一个朋友列表。朋友也是用户,所以每个用户都应该有很多朋友,显然每个朋友(用户)也有很多朋友(用户) 到目前为止,我一直假设用户之间存在多对多的关系。这是我目前正在使用的代码(带有hibernation JPA注释) 以下是我的MyUser代码:Java持久性与自我的多对多关系,java,database,annotations,many-to-many,persistence,Java,Database,Annotations,Many To Many,Persistence,我有一个用户类,用户应该有一个朋友列表。朋友也是用户,所以每个用户都应该有很多朋友,显然每个朋友(用户)也有很多朋友(用户) 到目前为止,我一直假设用户之间存在多对多的关系。这是我目前正在使用的代码(带有hibernation JPA注释) 以下是我的MyUser代码: @Entity public class MyUser { @Id private String username; private String userPassword; @ManyToMany @JoinTable
@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;
}
@实体
公共类MyUser{
@身份证
私有字符串用户名;
私有字符串用户密码;
@许多
@可接合(
name=“USR\u USR”,
joinColumns={@JoinColumn(name=“USR1\u ID”,referencedColumnName=“USERNAME”)},
inverseJoinColumns={@JoinColumn(name=“USR2\u ID”,referencedColumnName=“USERNAME”)}
private List friends=new ArrayList();
public void setUsername(字符串用户名){
this.username=用户名;
public void setUserPassword(字符串userPassword){
this.userPassword=userPassword;
}
公共字符串getUsername(){
返回用户名;
公共字符串getUserPassword(){
返回用户密码;
}
公众朋友(列出朋友){
这个。朋友=朋友;
}
公共列表getFriends(){
回报朋友;
}
我正试图通过将USERNAME列与其自身连接起来来创建第二个表(老实说,这听起来不太合适)
因此,我试图在我的数据库中创建一个关系,其中每个MyUser都可以有许多MyUser
我被这件事缠住了,希望能得到一些帮助。
非常感谢!我建议将您的数据库架构更改为以下内容:
MyUser(id, ....);
Friends(id1, id2);
其中MyUser.id是MyUser的主键,朋友id1和id2是MyUser.id的外键
这是一种非常常见的模式,将来会给您带来更少的问题,并且更易于维护。如果friends数据库(1,2)中有一个元组,那么用户a(w/ID 1)与用户B(w/ID 2)是朋友
希望有帮助