繁体   English   中英

在同一实体中只有一个集合的多对多?

[英]Many-To-Many with only one Collections in the same entity?

我有以下实体:

@Entity
@Table(name = "users")
public class User {

    ...

    private List<User> connections;

    ...

}

假设有用户AB。 用户A决定将用户B添加到他的连接列表中。 A的连接列表中必须包含用户BB的连接列表必须包含用户A。

考虑到我的业务逻辑,我得出结论,必须使用多对多关系。 我在Stackoverflow上发现了这个问题( 链接 ),但这并不是我一直在寻找的东西。 我只想在实体类中存储一个列表,而不是两个。

我该如何实施? 我假设必须有两个列表才能创建多对多关系,所以我想我的决定是不正确的。

假设你有一个表user_users(user_1_id,user_2_id)在你的数据库之间的许多一对多的关系, user是你可以做这样的事情:

@Entity
@Table(name = "users")
public class User {
    private List<User> connections;

}

现在您可以像这样使用getConnection getter

@ManyToMany(targetEntity=User.class)
@JoinTable(
    name="user_users",
    joinColumns=@JoinColumn(name="user_1_id", nullable=false),
    inverseJoinColumns=@JoinColumn(name="user_2_id", nullable=false)
)
public Set<ElementBean> getConnections() {
    return connections;
}

您可以像这样向用户添加用户:

public void addConnection(User usr) {
    if (usr !=null) { 
        connections.add(usr);
        usr.getConnections().add(this); 
    }    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM