我正在尝试在Spring Boot应用程序中开发以下关注者功能。我搜索了一个例子,我看到了这个,这在开始时非常有意义:
我的用户有以下的ManyToMany关系,就像这样......
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "relation",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "following_id"))
private List<User> following;
我开发了我的控制器,JSP和表格,它可以很好地查看您关注的是哪个用户,但是当我尝试开发关注者时出现问题。
User_id Following_id
1 2
1 3
1 4
1 6
2 4
2 6
我如何向user_id = 4的粉丝询问该表?
我认为我应该使用FollowerService和DAO,但我意识到我没有使用它的bean。 我认为我能做到的唯一方法是获取所有表并开始搜索某个following_id的所有外观以查看user_id是跟随者。
我找不到一个简单的方法来做到这一点。你觉得我应该创造一个豆子吗?怎么样?感谢
答案 0 :(得分:1)
创建相反的关系:
@ManyToMany(mappedBy = "following")
private List<User> followers;
您可以通过id = 4
followers
字段获取用户的关注者。
答案 1 :(得分:0)
这是我为您解决的问题的解决方案。用户类别:
@Entity
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
private String name;
@OneToMany(mappedBy="to")
private List<Followers> followers;
@OneToMany(mappedBy="from")
private List<Followers> following;
public User() {}
public User(String name) {
this.name = name;
}
}
如您所见,用户类别对正在关注的用户和他所关注的用户都有引用。
@Entity
public class Followers {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn(name="from_user_fk")
private User from;
@ManyToOne
@JoinColumn(name="to_user_fk")
private User to;
public Followers() {};
public Followers(User from, User to) {
this.from = from;
this.to = to;
}
}
followers类包含两个用户之间的关系,当然,您可能需要向该类添加更多信息,例如“ from”开始跟随“ to”之后。
如果您想吸引用户的关注者/关注者,您只需致电相应的获取者即可。